이번 문제는 옛날 다이얼 전화기를 갖고 문자를 입력 받았을 때 다이얼 전화기로 변환하여 치는 시간을 계산하는 문제였습니다. for문을 쓸까 아스키 코드를 사용할까 고민하다가 그냥 고전적이고 보기 좋은 switch문을 사용했습니다.
import java.util.Scanner;
public class dial_5622 {
public static int Dial(String input) { //Dial메서드. 문자열 입력 받으면 문자를 하나씩 짤라내서 알맞는 시간 계산
int time = 0; //총 걸린 시간
char a;
for (int i = 0; i < input.length(); i++) {
a = input.charAt(i);
switch (a) {
case 'A':
case 'B':
case 'C':
time += 3;
break;
case 'D':
case 'E':
case 'F':
time += 4;
break;
case 'G':
case 'H':
case 'I':
time += 5;
break;
case 'J':
case 'K':
case 'L':
time += 6;
break;
case 'M':
case 'N':
case 'O':
time += 7;
break;
case 'P':
case 'Q':
case 'R':
case 'S':
time += 8;
break;
case 'T':
case 'U':
case 'V':
time += 9;
break;
case 'W':
case 'X':
case 'Y':
case 'Z':
time += 10;
break;
}
}
return time;//시간 반환.
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); //스캐너 객체 생성
String input = sc.next(); //문자열 입력
System.out.println(dial_5622.Dial(input)); //Dial메서드를 호출해서 결과 계산
}
}
switch문과 for문을 사용해서 별 문제 없이 풀었습니다. 오류가 떠서 뭔가 했더니 switch문에서
case 'A', 'B', 'C':
time += 3;
break;
이런식으로 한 줄로 조건을 입력해주니 백준에선 에러를 띄워주는걸 알 수 있었습니다. 그래서 하나씩 조건을 줘서 다시 올렸습니다. 문제를 풀다가 생긴 의문점이랑 느낌점은 상근이가 참 많이 나오는거 같고 이 다이얼 전화기는 숫자 0과 1은 입력이 불가능할까? 였습니다.
출처 : 백준 5622번 https://www.acmicpc.net/problem/5622