티스토리 뷰

https://www.acmicpc.net/problem/5622

 

5622번: 다이얼

첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.

www.acmicpc.net

 

이 문제를 보면 주어진 문자열에서 각 문자를 찾아 if ~ else 문으로 알파벳의 아스키 코드를 비교하거나 switch 문을 통해 비교하여 문제를 해결할 수 있겠다고 생각했습니다.

 

먼저 switch 문을 통해 문제를 해결한 코드는 다음과 같습니다. 번호를 누르는데 걸리는 시간은 번호 + 1입니다.

 

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String alphabets = br.readLine();

        int answer = 0;

        for (char alpha : alphabets.toCharArray()) {
            switch (alpha) {
                case 'A': case 'B': case 'C':
                    answer += 3;
                    break;
                case 'D': case 'E': case 'F':
                    answer += 4;
                    break;
                case 'G': case 'H': case 'I':
                    answer += 5;
                    break;
                case 'J': case 'K': case 'L':
                    answer += 6;
                    break;
                case 'M': case 'N': case 'O':
                    answer += 7;
                    break;
                case 'P': case 'Q': case 'R': case 'S':
                    answer += 8;
                    break;
                case 'T': case 'U': case 'V':
                    answer += 9;
                    break;
                case 'W': case 'X': case 'Y': case 'Z':
                    answer += 10;
                    break;
            }
        }

        System.out.println(answer);
    }
}

 

Map 자료구조를 통해서도 문제를 해결할 수 있습니다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) throws IOException {
        Map<String, Integer> dial = new HashMap<>(){
            {
                put("A", 2); put("B", 2); put("C", 2);
                put("D", 3); put("E", 3); put("F", 3);
                put("G", 4); put("H", 4); put("I", 4);
                put("J", 5); put("K", 5); put("L", 5);
                put("M", 6); put("N", 6); put("O", 6);
                put("P", 7); put("Q", 7); put("R", 7); put("S", 7);
                put("T", 8); put("U", 8); put("V", 8);
                put("W", 9); put("X", 9); put("Y", 9); put("Z", 9);
            }
        };

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] alphabets = br.readLine().split("");

        int answer = 0;

        for (String alpha : alphabets) {
            answer += dial.get(alpha) + 1;
        }

        System.out.println(answer);
    }
}

 

더 좋은 해결 방법이 있다면 공유해주세요 :)

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함