본문 바로가기

Language/C++

[C++][백준 5622][문자열] 다이얼 - 컴도리돌이

728x90
728x90

문제

 

  • 입력 값으로 문자열을 받는데, 만약 ABC이면 다이얼 전화기로 222를 돌려야 한다.

  • 해당 2를 돌리 때 3초가 걸리며, 숫자가 증가할 때마다 1초가 증가된다.

  • 문자열을 입력받아서 해당 문자열을 다이얼을 걸기 위한 최소 시간을 출력.


소스 코드

  • 알파벳 문자열을 갖는 string과 해당 알파벳 위치에 해당하는 걸리는 시간을 설정한다.

  • 입력받은 문자열의 인덱스를 찾아서 arr 배열에 해당 index에 해당하는 값을 sum에 더해준다.

  • arr과 s를 설정하여서 매우 쉬운 코드가 되었다.(다른 풀이가 생각 안 나서..)

#include<iostream>
#include<string>

using namespace std;

int main(void)
{
    string s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ",input;
    int arr[26] = {3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,8,9,9,9,10,10,10,10};
    int sum = 0;
    cin >> input;
    for(int i =0; i<input.length(); i++)
    {
        sum += arr[(int)s[(int)input[i]-65]-65];
    }
    cout << sum ;
    return 0;
}

728x90
728x90