[Baekjoon] 5622번 문제풀이 - 다이얼

2020. 8. 7. 17:01Computer Sciences/Problem Solve

 

문제를 보자마자 ASCII 코드를 활용하여 풀면 되겠다는 생각이 들었습니다. If, else-if 문 혹은 switch 문을 사용할 수 있습니다. 먼저 If, else-if 문으로 작성한 코드를 보도록 합시다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Baekjoon5622 {
    public static void main(String[] args) {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = null;

        try {
            str = br.readLine();
        } catch (IOException e) {
            System.out.println("입출력 오류 발생");
        }

        str = str.toUpperCase();

        int time = 0;
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            if (ch >= 'A' && ch <= 'C') { // A, B, C
                time += 3;
            } else if (ch >= 'D' && ch <= 'F') { // D, E, F
                time += 4;
            } else if (ch >= 'G' && ch <= 'I') { // G, H, I
                time += 5;
            } else if (ch >= 'J' && ch <= 'L') { // J, K, L
                time += 6;
            } else if (ch >= 'M' && ch <= 'O') { // M, N, O
                time += 7;
            } else if (ch >= 'P' && ch <= 'S') { // P, Q, R, S
                time += 8;
            } else if (ch >= 'T' && ch <= 'V') { // T, U, V
                time += 9;
            } else if (ch >= 'W' && ch <= 'Z') { // W, X, Y, Z
                time += 10;
            }
        }

        System.out.println(time);
    }
}

 

이번엔 switch 문으로 작성한 코드를 봅시다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Baekjoon5622 {
    public static void main(String[] args) {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = null;

        try {
            str = br.readLine();
        } catch (IOException e) {
            System.out.println("입출력 오류 발생");
        }

        str = str.toUpperCase();

        int time = 0;
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            time += calcTime(ch);
        }

        System.out.println(time);
    }

    public static int calcTime(char ch) {
        switch (ch) {
            case 'A':
            case 'B':
            case 'C':
                return 3;
            case 'D':
            case 'E':
            case 'F':
                return 4;
            case 'G':
            case 'H':
            case 'I':
                return 5;
            case 'J':
            case 'K':
            case 'L':
                return 6;
            case 'M':
            case 'N':
            case 'O':
                return 7;
            case 'P':
            case 'Q':
            case 'R':
            case 'S':
                return 8;
            case 'T':
            case 'U':
            case 'V':
                return 9;
            case 'W':
            case 'X':
            case 'Y':
            case 'Z':
                return 10;
            default:
                return -1;
        }
    }
}

 

다른 분들이 작성한 코드를 보니 규칙을 찾아서 수학적으로 접근하신 분들도 계시더라구요( 대단 ㄷㄷ)