Computer Science/Algorithm Problem

백준] 1864 - 문어 숫자(ACM-ICPC Regionals)

TwinParadox 2018. 12. 29. 12:32
728x90

시간 제한 : 1초

메모리 제한 : 128MB




입력

한 줄에 하나씩 문어 숫자가 입력으로 주어진다. 각 숫자는 최소 한 개, 최대 여덟 개의 문어 숫자 기호로 이루어져있다. 입력으로 '#'이 들어오면 입력을 종료한다.




출력

입력 받은 문어 숫자에 대응하는 십진수를 한 줄에 하나씩 출력한다.




소스코드

#include <iostream>
#include <string>
#include <math.h>
using namespace std;
int main(void)
{
	while (1)
	{
		int len;
		long long ans = 0;
		string str;
		cin >> str;
		if (str == "#")
			break;
		len = str.length();

		for (int i = 1; i <= len; i++)
		{
			int tmp;
			switch (str[i - 1])
			{
			case '-':
				tmp = 0;
				break;
			case '\\':
				tmp = 1;
				break;
			case '(':
				tmp = 2;
				break;
			case '@':
				tmp = 3;
				break;
			case '?':
				tmp = 4;
				break;
			case '>':
				tmp = 5;
				break;
			case '&':
				tmp = 6;
				break;
			case '%':
				tmp = 7;
				break;
			case '/':
				tmp = -1;
				break;
			default:
				break;
			}
			ans += tmp * pow(8, len - i);
		}
		cout << ans << '\n';
	}
}




Tip

간단한 문자열 처리 문제다. string을 이용할 줄 알면 더 쉽게 풀 수 있다.



728x90