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;
}
}