[백준] 5622번: 다이얼 (JAVA)
2025. 5. 8. 14:53ㆍ알고리즘
https://www.acmicpc.net/problem/5622
문제설명
각 다이얼마다 알파벳 3개 + 숫자 1개로 구성되어있는데, 입력받은 알파벳 값에 맞게 몇 초가 걸리는지 합계를 구하여 출력하는 문제이다.
(문제 예시)
입력: ADBP
=> A는 숫자 2에 있고 3초가 걸림, D는 숫자 3에 있고 4초가 걸림, B는 숫자 2에 있고 3초가 걸림, P는 숫자 7에 있고 8초가 걸림.
그러면 출력은 이 걸린 시간들의 합을 출력하면 됨.
출력: 18
코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
String[] dials = reader.readLine().split("");
int sum = 0;
for (int i = 0; i < dials.length; i++) {
char dial = dials[i].charAt(0);
if (dial >= 'A' && dial <= 'C') {
sum += 3;
} else if (dial >= 'D' && dial <= 'F') {
sum += 4;
} else if (dial >= 'G' && dial <= 'I') {
sum += 5;
} else if (dial >= 'J' && dial <= 'L') {
sum += 6;
} else if (dial >= 'M' && dial <= 'O') {
sum += 7;
} else if (dial >= 'P' && dial <= 'S') {
sum += 8;
} else if (dial >= 'T' && dial <= 'V') {
sum += 9;
} else if (dial >= 'W' && dial <= 'Z') {
sum += 10;
} else {
sum += 2;
}
}
writer.write(String.valueOf(sum));
writer.newLine();
writer.flush();
writer.close();
reader.close();
}
}
코드설명
입력받은 문자열을 하나하나의 Char값으로 변환한 후, 조건문을 활용해 해당 알파벳이 몇 초가 걸리는지를 sum 변수에 덧셈한다. 그런 다음 sum값을 출력하면 끝.
근데 코드가 좀 노가다 느낌이 있고, 계속 생각해보니까 더 효율적인 코드도 작성 가능할 것 같습니다.
'알고리즘' 카테고리의 다른 글
[백준] 2941번: 크로아티아 알파벳 (JAVA) (0) | 2025.05.10 |
---|---|
[백준] 2153번: 소수 단어 (JAVA) (0) | 2022.03.03 |
[백준] 2902번: KMP는 왜 KMP일까? (JAVA) (0) | 2022.01.31 |
[백준] 10987번: 모음의 개수 (JAVA) (0) | 2022.01.23 |
[백준] 4143번: 다음 소수 (JAVA) (0) | 2022.01.20 |