본문 바로가기
Coding Test/백준

[백준 자바 JAVA] 5622번 다이얼

by 똧이 2022. 3. 17.
반응형

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

 

5622번: 다이얼

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

www.acmicpc.net

 

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 number = br.readLine();
        char[] arr = new char[number.length()];
        int time = 0;

        for(int i = 0; i < number.length(); i++){
            arr[i] = number.charAt(i);
        }

        for(int i = 0; i < arr.length; i++){
            if((int)arr[i] <= 67){
                time += 3;
            } else if((int)arr[i] <= 70){
                time += 4;
            } else if((int)arr[i] <= 73){
                time += 5;
            } else if((int)arr[i] <= 76){
                time += 6;
            } else if((int)arr[i] <= 79){
                time += 7;
            } else if((int)arr[i] <= 83){
                time += 8;
            } else if((int)arr[i] <= 86){
                time += 9;
            } else if((int)arr[i] <= 90){
                time += 10;
            } else {
                time += 1;
            }
        }

        System.out.println(time);
    }
}

 

이용 방식은 아스키 코드로 풀었음

switch ~ case로 풀어도 되지만 아스키 코드로 풀고 싶어서 이렇게 풀었다!

이렇게 보니까 (int)arr[i]를 변수로 받아서 푸는게 훨씬 깔끔할 뻔했다.

 

 

출처: https://shaeod.tistory.com/228

참고할 아스키 코드표. 문제에서 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 라고 했으므로 A(65)~Z(90)까지 참고하면 된다.

 

풀이

1.

숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.

라고 하였으므로

1 -> 2초

2 -> 3초

3 -> 4초

임을 참고하여 로직을 짜면 된다.

728x90

댓글