본문 바로가기

Algorithm/자료구조

(C++) - 백준(BOJ) 1864 : 문어 숫자

반응형

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

 

1864번: 문어 숫자

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

www.acmicpc.net

자료구조, 문자열, 진수변환 문제였습니다.

 

📕 풀이방법

📔 입력 및 초기화

 1. 문어의 수를 저장할 map변수 m, 문자열을 입력받을 s를 선언해줍니다.

 2. 각 문어의 수를 10진수로 변환하기 위한 전처리를 해줍니다.

 3. "#"이 나올 때까지 s에 입력해줍니다.

📔 풀이과정

convert()함수를 수행합니다.

pow함수를 사용하면 8 ^ 2, 8 ^ 1식으로 지수가 포함된 식을 한번에 구할 수 있습니다.

📔 정답출력

convert()함수 반환값을 출력합니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
string s;
map <char, int> m;
int convert() {
    int num = 0;
    int indice = s.size() - 1;
    for(int i = 0; i < s.size(); i++, indice--) 
        num += pow(8,indice) * m[s[i]];
    return num;
}
int main(){
    m['-'] = 0, m['\\'] = 1, m['('] = 2, m['@'] = 3;
    m['?'] = 4, m['>'] = 5, m['&'] = 6, m['%'] = 7;
    m['/'] = -1;
    while(1){
        cin >> s;
        if(s == "#") break;
        cout << convert() << '\n';
    }
}