-
5622번. 다이얼IT Tech/PS 2020. 5. 25. 13:44
문제
상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다.
전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다.
숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.
상근이의 할머니는 전화 번호를 각 숫자에 해당하는 문자로 외운다. 즉, 어떤 단어를 걸 때, 각 알파벳에 해당하는 숫자를 걸면 된다. 예를 들어, UNUCIC는 868242와 같다.
할머니가 외운 단어가 주어졌을 때, 이 전화를 걸기 위해서 필요한 시간을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어는 2글자~15글자로 이루어져 있다.
출력
첫째 줄에 다이얼을 걸기 위해서 필요한 시간을 출력한다.
예제 입력
UNUCIC
예제 출력
36
코드
#include <iostream> using namespace std; int changeInt(char tmp); int changeInt(char tmp) { int num = 0; switch(tmp) { case 'A' : case 'B' : case 'C' : num = 2; break; case 'D': case 'E': case 'F': num = 3; break; case 'G': case 'H': case 'I': num = 4; break; case 'J': case 'K': case 'L': num = 5; break; case 'M': case 'N': case 'O': num = 6; break; case 'P': case 'Q': case 'R': case 'S': num = 7; break; case 'T': case 'U': case 'V': num = 8; break; case 'W': case 'X': case 'Y': case 'Z': num = 9; break; default: break; } return num; } int main() { string str; char tmp; int tmpInt = 0, result = 0; cin >> str; for(int i = 0; i < str.length(); i++) { tmp = str.at(i); tmpInt = changeInt(tmp); result += tmpInt; } result += str.length(); cout << result << endl; return 0; }
처음에 문제가 몬말인지 이해를 못해서 못 풀고 있다가..
그림의 숫자랑 문자랑 매칭되는 거 보고 좀 이해되었다가 UNUCIC하면 왜 36인지 몰라서 헤매다가..
알게 된 다음 문제를 해결하였습니다.
반응형'IT Tech > PS' 카테고리의 다른 글
2941번. 크로아티아 알파벳 (0) 2020.07.21 BOJ 난제 모음 (0) 2020.05.26 2908번. 상수 (0) 2020.05.17 2675번. 문자열 반복 (0) 2020.05.16 15596번. 정수 N개의 합 (0) 2020.05.13