[Bronze 2] [Java] 다이얼 (5622번)
by HeshAlgo728x90
<다이얼>
문제 설명
상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다.
전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다.
숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.
상근이의 할머니는 전화 번호를 각 숫자에 해당하는 문자로 외운다. 즉, 어떤 단어를 걸 때, 각 알파벳에 해당하는 숫자를 걸면 된다. 예를 들어, UNUCIC는 868242와 같다.
할머니가 외운 단어가 주어졌을 때, 이 전화를 걸기 위해서 필요한 시간을 구하는 프로그램을 작성하시오.
제한 사항
입력
첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어는 2글자~15글자로 이루어져 있다.
출력
첫째 줄에 다이얼을 걸기 위해서 필요한 시간을 출력한다.
내 생각
다이얼에 적혀있는 문자의 범위 만큼 초를 증가시켜서 구현시켰습니다. 다이얼 별로 3자리의 문자가 있는 줄 알았는데 중간에 4개인 다이얼이 있었습니다.(7과 9) 이것 때문에 계속 틀렸습니다를 받았습니다ㅠㅠ
항상 문제를 꼼꼼히 봐야겠습니다.
걸린 시간
20분 24초
작성 코드
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
32
33
34
35
36
37
38
39
40
41
42
43
|
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String dial = scan.next();
int sec = 0;
for (int i = 0; i < dial.length(); i++) {
char word = dial.charAt(i);
int number = word - 65;
if (0 <= number && number < 3) {
sec += 3;
} else if (3 <= number && number < 6) {
sec += 4;
} else if (6 <= number && number < 9) {
sec += 5;
} else if (9 <= number && number < 12) {
sec += 6;
} else if (12 <= number && number < 15) {
sec += 7;
} else if (15 <= number && number < 19) {
sec += 8;
} else if (19 <= number && number < 22) {
sec += 9;
} else if (22 <= number && number < 26) {
sec += 10;
} else if (number == 26){
sec += 11;
} else {
sec += 2;
}
}
System.out.println(sec);
}
}
|
실행 결과
'알고리즘 > 백준 (문자열)' 카테고리의 다른 글
[Silver 5] [Java] 방 번호 (1475번) (0) | 2020.03.29 |
---|---|
[Silver 5] [Java] 그룹 단어 체커 (1316번) (0) | 2020.03.04 |
[Silver 3] [Java] 놀라운 문자열 (1972번) (0) | 2020.03.03 |
블로그의 정보
꾸준히 공부하는 개발 노트
HeshAlgo