새소식

💻 Programming (프로그래밍)/C++ | 백준

[C++][백준] - 문어 숫자 (1864번)

  • -
https://www.acmicpc.net/problem/1864
 

1864번: 문어 숫자

해류가 매우 느리고 바닥을 기어다니는 생물이 적은 바다 밑바닥에서만 발견되는 잔물결 무늬의 정체는 오랫동안 해양학자들에게 수수께끼였다. 하지만 최근의 연구 성과는 동물 언어학 분야

www.acmicpc.net

🔔 문제 : 

  • -는 0에 대응한다.
  • \는 1에 대응한다.
  • (는 2에 대응한다.
  • @는 3에 대응한다.
  • ?는 4에 대응한다.
  • >는 5에 대응한다.
  • &는 6에 대응한다.
  • %는 7에 대응한다.
  • /는 -1에 대응한다.

그리고 8진수로 쓰입니다.

 

(@&는 2 × 82 + 3 × 8 + 6 = 158

?/--는 4 × 83 + −1 × 82 + 0 × 8 + 0 = 1984
/(\는 −1 × 82 + 2 × 8 + 1 = −47

 

문자를 보고 값이 얼마인지를 출력하는 문제입니다.


🔔 Kick Point :

string 라이브러리의 find("str") 함수를 사용하여, 각 문자별 숫자를 연결시켜주었습니다.

그리고 마지막 문자 / 은 경우만 조건을 두어 -1로 대응시켰습니다.

 


🔔 Code :

#include <iostream>
#include <string>
#include <cmath>
using namespace std;

int main() {
	string octoStr = "-\\(@?>&%/";
	string n;

	while (cin >> n) {
		if (n == "#") break;
		int resultInt = 0;
		
		for (int i = 0; i < n.length(); i++) {
			resultInt += (int)((octoStr.find(n[i]) ==8) ? -1 : octoStr.find(n[i]))
				* pow(8, n.length() -1 -i);
		}

		cout << resultInt << endl;
	}
	
}

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.