문제 url:
다이얼
문제
※ 알고가자!
각 알파뱃에 따른 숫자가 따로 주어진다. ex) abc = 2, def = 3
숫자 1을 걸려면 총 2초가 걸리면 한 칸 옆 숫자를 걸기 위해서 1초씩 더 걸리는 조건을 잘 생각해 시간을 계산해보자
위의 사진에 있는 다이얼을 봐야 풀 수 있는 문제이다.
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] num = br.readLine().toCharArray();
int sec = 0;
for (char value : num) {
switch(value) {
case 'A': case 'B': case 'C':
sec += 3;
break;
case 'D': case 'E': case 'F':
sec += 4;
break;
case 'G': case 'H': case 'I':
sec += 5;
break;
case 'J': case 'K': case 'L':
sec += 6;
break;
case 'M': case 'N': case 'O':
sec += 7;
break;
case 'P': case 'Q': case 'R': case 'S':
sec += 8;
break;
case 'T': case 'U': case 'V':
sec += 9;
break;
case 'W': case 'X': case 'Y': case 'Z':
sec += 10;
break;
}
}
System.out.println(sec);
}
}
문제를 풀이해보면, 단어를 입력받으면 toCharArray를 이용해 문자형 배열로 만들어 준 다음 forEach문을 이용하여 반복할 수 있도록 코드를 짜보았다.
그 후 swtich문에 맞게 시간을 더하도록 하였다.
트러블 슈팅.. case 'A', 'B', -> JDK11에서는 지원하지 않는다..
처음에는 case 'A', 'B' 이렇게 해도 문제없이 실행되어 제출 하였지만, 이럴수가 java11버전에서는 지원하지 않는 방식이라고 한다.(17을 사용하다 현재는 11로 다운그레이드 하였다.)
저 방법을 사용하기 이전엔 ||으로 멀티플 case를 해봤지만 그렇게 하면 안된다고 한다.
그래서 찾아보니 저렇게 case문을 하나하나 입력해줘야 한다.
지금 생각하니 swtich~case문에 대해 이해 없이 사용했던 것 같다.
누군가에게는 단순한 구문일 수 있지만, 해당 문제를 풀면서 (필자는)생각 없이, 이해 없이 쉽게 써왔던 것 같아 약간의 반성을 하는 시간을 가졌다...