별의 공부 블로그 🧑🏻‍💻
728x90
728x170

문제

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


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

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

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

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

 

 

입력

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

 

 

출력

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

 

 

예제 입력

 UNUCIC

 

예제 출력

 36

 

 

힌트

 

 

출처

Contest > Croatian Open Competition in Informatics > COCI 2012/2013 > Contest #6 1번

· 문제를 번역한 사람: baekjoon

 

 

알고리즘 분류

· 문자열 처리

 

 

코드

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 
#include <iostream>
#include <string.h>    // strlen()
 
#define N 15
 
using namespace std;
 
int main()
{
    char ary1[3= { 'A''B''C' };        // +3
    char ary2[3= { 'D''E''F' };        // +4
    char ary3[3= { 'G''H''I' };        // +5
    char ary4[3= { 'J''K''L' };        // +6
    char ary5[3= { 'M''N''O' };        // +7
    char ary6[4= { 'P''Q''R''S' };   // +8
    char ary7[3= { 'T''U''V' };        // +9
    char ary8[4= { 'W''X''Y''Z' };   // +10
 
    char input[N];
    int len, cnt = 0;
 
    cin >> input;
    
    len = strlen(input);
 
    for (int i = 0; i < len; i++) {
        for (int j = 0; j < 3; j++) {
            if (input[i] == ary1[j]) {
                cnt += 3;
            }
            else if (input[i] == ary2[j]) {
                cnt += 4;
            }
            else if (input[i] == ary3[j]) {
                cnt += 5;
            }
            else if (input[i] == ary4[j]) {
                cnt += 6;
            }
            else if (input[i] == ary5[j]) {
                cnt += 7;
            }
            else if (input[i] == ary7[j]) {
                cnt += 9;
            }
        }
 
        for (int j = 0; j < 4; j++) {
            if (input[i] == ary6[j]) {
                cnt += 8;
            }
            else if (input[i] == ary8[j]) {
                cnt += 10;
            }
        }
    }
 
    cout << cnt << endl;
 
    return 0;
}
cs



728x90
그리드형(광고전용)
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖