본문 바로가기
백준

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

by Hongwoo 2022. 7. 9.
반응형

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

 

5622번: 다이얼

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

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 5622번 다이얼은 브론즈 2 난이도의 구현 문제이다. 이 문제에서는 단어 S가 주어지고 이 전화를 걸기 위해 걸리는 필요한 최소 시간을 구해서 출력하면 된다. 문제는 처음에 어려워 보이지만 되게 간단하다. 

 

우선 그림에 나와있는 2번에 있는 A, B, C는 전화를 거는데 3초가 걸린다. 그 왼쪽에 있는 D, E, F는 4초 이런 식이다. 그리고 마지막에 있는 W, X, Y, Z는 10초가 걸린다. 즉, 예를 들어서 단어 "WA"가 입력으로 주어지면 W는 10초, A는 3초가 걸리니까 13초가 걸린다고 할 수 있다.

 

이 문제는 간단한 배열을 통해서 풀 수 있다. 사이즈가 26인 int형 배열 arr을 선언한다고 하겠다. 그리고 arr에는 각 알파벳마다 전화를 거는데 몇 초가 걸리는지를 저장하겠다. 이 문제에서는 아스키코드를 이용할 것이다. A의 아스키코드값은 65이다. 따라서 입력받는 캐릭터를 char c라고 하면 arr [(int) c - 65]를 하면 그 알파벳은 전화를 거는데 얼마나 걸리는지를 구할 수 있다.

 

하지만 우선 배열을 초기화해야 한다. 배열 초기화랑 자세한 코드는 밑에서 참고할 수 있다.

 


  • 코드

 

import java.io.*;
import java.util.*;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s = br.readLine();
        int[] arr = new int[26];
        arr[0] = arr[1] = arr[2] = 3; //A, B, C는 각각 3초가 걸린다
        arr[3] = arr[4] = arr[5] = 4; //D, E, F는 4초가 걸린다 
        arr[6] = arr[7] = arr[8] = 5;
        arr[9] = arr[10] = arr[11] = 6;
        arr[12] = arr[13] = arr[14] = 7;
        arr[15] = arr[16] = arr[17] = arr[18] = 8;
        arr[19] = arr[20] = arr[21] = 9;
        arr[22] = arr[23] = arr[24] = arr[25] = 10;
        int sum = 0;  //걸리는 시간
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            sum += arr[(int)c - 65];  //아스키 코드값 이용
        }
        System.out.print(sum);
    }
}

 

 

반응형

댓글