반응형
문제
https://www.acmicpc.net/problem/5622
코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String dial = sc.nextLine();
int num;
int sum = 0;
for(int i = 0; i < dial.length(); i++){
num = 1;
switch (dial.charAt(i)) {
case 'A':
case 'B':
case 'C':
num += 2;
break;
case 'D':
case 'E':
case 'F':
num += 3;
break;
case 'G':
case 'H':
case 'I':
num += 4;
break;
case 'J':
case 'K':
case 'L':
num += 5;
break;
case 'M':
case 'N':
case 'O':
num += 6;
break;
case 'P':
case 'Q':
case 'R':
case 'S':
num += 7;
break;
case 'T':
case 'U':
case 'V':
num += 8;
break;
case 'W':
case 'X':
case 'Y':
case 'Z':
num += 9;
break;
}
sum += num;
}
System.out.println(sum);
sc.close();
}
}
코드 설명
사용자에게 입력받은 문자열의 길이만큼 for문을 돌며 각 인덱스를 확인한다.
해당 문자가 case문에 해당하는 문자라면
1 + 문자별로 지정된 숫자
(숫자 1을 걸기 위해 2초가 필요하고, 옆 자리 숫자를 걸려면 +1초씩 증가하므로)
를 num에 저장하고, switch문이 끝날 때마다 sum 변수에 num의 값을 저장해 준다.
for문이 종료되면 sum을 출력한다.
*for문이 새로 시작될 때마다 num을 초기화 시켜주어야 이전 for문을 돌며 num에 저장된 수가 누적되지 않는다.
마무리
switch (dial.charAt(i)) {
case 'A', 'B', 'C':
num += 2;
break;
case 'D', 'E', 'F':
num += 3;
break;
case 'G', 'H', 'I':
num += 4;
break;
case 'J', 'K', 'L':
num += 5;
break;
case 'M', 'N', 'O':
num += 6;
break;
case 'P', 'Q', 'R', 'S':
num += 7;
break;
case 'T', 'U', 'V':
num += 8;
break;
case 'W', 'X', 'Y', 'Z':
num += 9;
break;
}
초기에는 이렇게 코드를 작성했고 이클립스에서도 잘 돌아갔는데 컴파일 에러 뜸.
자바 11에서 case 다중 라벨은 지원하지 않는다고 한다.
반응형
'Problem Solving > 백준' 카테고리의 다른 글
[백준|C++] 10250: ACM 호텔 (1) | 2021.09.01 |
---|---|
[백준|C++] 2292: 벌집 (0) | 2021.09.01 |
[백준|C++] 1712: 손익분기점 (0) | 2021.08.31 |
[백준|자바] 2908: 상수 (0) | 2021.08.28 |
[백준|자바] 1152: 단어의 개수 (0) | 2021.08.28 |
[백준|자바] 1157: 단어 공부 (0) | 2021.08.27 |