728x90
SMALL
백준 문제 풀이: 5622 [다이얼]
문제 링크: https://www.acmicpc.net/problem/5622
문제 설명:
문자열로 주어진 알파벳을 전화기의 다이얼을 이용해 입력할 때 걸리는 시간을 계산하는 문제입니다. 다이얼의 번호와 문자 간 대응 관계는 다음과 같습니다:
2: A, B, C
3: D, E, F
4: G, H, I
5: J, K, L
6: M, N, O
7: P, Q, R, S
8: T, U, V
9: W, X, Y, Z
각 번호를 입력하는 데 걸리는 시간은 번호 + 1초입니다. 예를 들어, 'A'는 2번 번호에 해당하므로 입력하는 데 3초가 걸립니다.
문제 해결 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.next(); // 입력 문자열
int t = 0; // 총 걸리는 시간
// 각 문자를 다이얼 번호와 매칭하여 시간 계산
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (ch >= 'A' && ch <= 'C') {
t += 3;
} else if (ch >= 'D' && ch <= 'F') {
t += 4;
} else if (ch >= 'G' && ch <= 'I') {
t += 5;
} else if (ch >= 'J' && ch <= 'L') {
t += 6;
} else if (ch >= 'M' && ch <= 'O') {
t += 7;
} else if (ch >= 'P' && ch <= 'S') {
t += 8;
} else if (ch >= 'T' && ch <= 'V') {
t += 9;
} else if (ch >= 'W' && ch <= 'Z') {
t += 10;
}
}
System.out.println(t); // 결과 출력
}
}
예제 입력:
UNUCIC
예제 출력:
36
코드 설명
- 핵심 알고리즘: 문자열의 각 문자를 다이얼 번호와 매칭하여 걸리는 시간을 누적합니다.
- 구현 세부사항:
- 입력된 문자열의 각 문자를 순회하면서 다이얼 번호에 따라 시간을 계산합니다.
- 시간 계산은 문자 범위를 조건으로 비교하여 수행합니다.
- 시간 복잡도:
- 문자열의 길이를 n이라고 할 때, 각 문자를 한 번씩 확인하므로 O(n)입니다.
결과
입력 문자열의 각 문자를 전화기의 다이얼 번호에 매칭해 걸리는 총 시간을 계산합니다. 문제는 조건문 활용과 문자열 순회 방법을 연습하기에 적합합니다. 추가적인 질문이나 개선 사항이 있다면 댓글로 알려주세요!
728x90
LIST
'BAEKJOON > 구현' 카테고리의 다른 글
백준 2115번 [갤러리](C++) -yes6686- 티스토리 (0) | 2025.01.26 |
---|---|
백준 25501번 [재귀의 귀재](C++) -yes6686- 티스토리 (0) | 2025.01.18 |
백준 18808번 [스티커 붙이기](C++) -yes6686- 티스토리 (0) | 2025.01.12 |
백준 10811번 [바구니 뒤집기](JAVA) -yes6686- 티스토리 (0) | 2025.01.08 |
백준 10813번 [공 바꾸기](JAVA) -yes6686- 티스토리 (0) | 2025.01.08 |