북극곰의 개발일기

BOJ 5622 다이얼





posted by purplebeen on Fri May 04 2018 12:17:16 GMT+0900 (KST) in 알고리즘


문제

상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다.

전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 다른 숫자를 누르려면 다이얼이 원래 위치로 돌아가기를 기다려야 한다.

숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.

상근이의 할머니는 전화 번호를 각 숫자에 해당하는 문자로 외운다. 즉, 어떤 단어를 걸 때, 각 알파벳에 해당하는 숫자를 걸면 된다. 예를 들어, UNUCIC는 868242와 같다.

할머니가 외운 단어가 주어졌을 때, 이 전화를 걸기 위해서 필요한 시간을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어는 2글자~15글자로 이루어져 있다.

출력

첫째 줄에 다이얼을 걸기 위해서 필요한 시간을 출력한다.

#include <stdio.h>
int main(void) {
        char str[16];
        int sum = 0;
        scanf("%s", str);
        for(int i = 0; i < 16; i++) {
                switch(str[i]) {
                        case 'A':
                        case 'B':
                        case 'C':
                                sum += 3;
                                break;
                        case 'D':
                        case 'E':
                        case 'F':
                                sum += 4;
                                break;
                        case 'G':
                        case 'H':
                        case 'I':
                                sum += 5;
                                break;
                        case 'J':
                        case 'K':
                        case 'L':
                                sum += 6;
                                break;
                        case 'M':
                        case 'N':
                        case 'O':
                                sum += 7;
                                break;
                        case 'P':
                        case 'Q':
                        case 'R':
                        case 'S':
                                sum += 8;
                                break;
                        case 'T':
                        case 'U':
                        case 'V':
                                sum += 9;
                                break;
                        case 'W':
                        case 'X':
                        case 'Y':
                        case 'Z':
                                sum += 10;
                                break;
                        default:
                                sum += 0;
                                break;
                }
        }
        printf("%d\n", sum);
        return 0;
}

2번을 누르는데 걸리는 시간을 3으로 잡고, 나머지도 같은 방식으로 알파벳으로 구분하여 더한다.