문제
전화 다이얼로 알파벳 단어를 입력할 때 걸리는 총 시간을 구한다. 각 알파벳은 전화기의 숫자 버튼에 매핑되며, 숫자 N을 다이얼하면 N+1초가 소요된다.
입력
첫째 줄에 대문자 알파벳으로 이루어진 단어가 주어진다 (길이 2 이상 15 이하).
출력
단어를 다이얼하는 데 걸리는 총 시간을 출력한다.
예제
| 입력 | 출력 |
|---|---|
UNUCIC | 36 |
풀이
각 알파벳에 대응하는 다이얼 번호를 switch문으로 매핑하여 시간을 누적한다.
- 문자열의 각 문자를 순회한다
- ABC→3, DEF→4, GHI→5, JKL→6, MNO→7, PQRS→8, TUV→9, WXYZ→10을 누적한다
- 총 시간을 출력한다
핵심 아이디어: 전화 다이얼에서 숫자 N을 돌리면 N+1초가 걸리므로, 각 알파벳이 속한 숫자 + 1이 소요 시간이다.
코드
package day599;
import java.io.*;
public class Day557BOJ5622다이얼 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int count = 0;
int k = s.length();
for (int i = 0; i < k; i++) {
switch (s.charAt(i)) {
case 'A':
case 'B':
case 'C':
count += 3;
break;
case 'D':
case 'E':
case 'F':
count += 4;
break;
case 'G':
case 'H':
case 'I':
count += 5;
break;
case 'J':
case 'K':
case 'L':
count += 6;
break;
case 'M':
case 'N':
case 'O':
count += 7;
break;
case 'P':
case 'Q':
case 'R':
case 'S':
count += 8;
break;
case 'T':
case 'U':
case 'V':
count += 9;
break;
case 'W':
case 'X':
case 'Y':
case 'Z':
count += 10;
break;
}
}
System.out.print(count);
}
}복잡도
- 시간: O(N) — N은 문자열 길이
- 공간: O(1)