본문 바로가기

BAEKJOON/구현

백준 5622번 [다이얼](JAVA)-yes6686- 티스토리

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