Algorithm/[BOJ]
[Java] 백준 5622번 : 다이얼
정보통신 고심이
2024. 3. 21. 11:39
https://www.acmicpc.net/problem/5622
접근 방법
1. 문자열 입력 받기
2. 입력 받은 문자열을 한글자씩 분리 (split. charAt)
3.
정답 코드
import java.io.*;
// import java.util.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String input = br.readLine();
int count =0;
for(int i=0; i<input.length(); i++) {
switch(input.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;
}
}
bw.write(String.valueOf(count));
br.close();
bw.flush();
bw.close();
}
}
오답 코드
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String input = br.readLine();
String[] chars = input.split(""); // 한글자씩 분리
for(int i=0; i<chars.length; i++) {
switch(chars[i]) {
case A, B, C:
bw.write(3);
break;
case D, E, F:
bw.write(4);
break;
case G, H, I:
bw.write(5);
break;
case J, K, L:
bw.write(6);
break;
case M, N, O:
bw.write(7);
break;
case P, Q, R, S:
bw.write(8);
break;
case W, X, Y, Z:
bw.write(9);
break;
}
}
br.close();
bw.flush();
bw.close();
}
}
틀린 이유 1 : case문 문법
case A, B, C : (X)
case A : case B : case C: (O)
틀린 이유 2 : 값을 누적하지 않았음
bw.write(8) 이렇게 바로 출력하는게 아니라
다음 문자 값까지 누적 된 합을 구해야 하기 때문에 += 연산 필요
case가 많아서 설마 case문으로 다 하겠어? 이런 생각이 들었는데 진짜 case문을 사용했다
한번 접근 방법이 떠오르면 끝까지 해보자