반응형
https://www.acmicpc.net/problem/5622
- 문제
- 문제 풀이
백준 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);
}
}
반응형
'백준' 카테고리의 다른 글
[백준] 10828번 : 스택 – JAVA [자바] (0) | 2022.07.09 |
---|---|
[백준] 1712번 : 손익분기점 – JAVA [자바] (0) | 2022.07.09 |
[백준] 1463번 : 1로 만들기 – JAVA [자바] (0) | 2022.07.09 |
[백준] 2440번 : 별 찍기 - 3 – JAVA [자바] (0) | 2022.07.09 |
[백준] 7287번 : 등록 – JAVA [자바] (0) | 2022.07.09 |
댓글