Skip to content

Commit c9ccfd9

Browse files
committed
[Bronze II] Title: 다이얼, Time: 8 ms, Memory: 69104 KB -BaekjoonHub
1 parent f49a97c commit c9ccfd9

File tree

2 files changed

+59
-0
lines changed

2 files changed

+59
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# [Bronze II] 다이얼 - 5622
2+
3+
[문제 링크](https://www.acmicpc.net/problem/5622)
4+
5+
### 성능 요약
6+
7+
메모리: 69104 KB, 시간: 8 ms
8+
9+
### 분류
10+
11+
구현
12+
13+
### 제출 일자
14+
15+
2025년 1월 25일 21:31:05
16+
17+
### 문제 설명
18+
19+
<p>상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다.</p>
20+
21+
<p style="text-align: center;"><img alt="" src="" style="width: 267px; height: 265px;"></p>
22+
23+
<p>전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다.</p>
24+
25+
<p>숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.</p>
26+
27+
<p>상근이의 할머니는 전화 번호를 각 숫자에 해당하는 문자로 외운다. 즉, 어떤 단어를 걸 때, 각 알파벳에 해당하는 숫자를 걸면 된다. 예를 들어, UNUCIC는 868242와 같다.</p>
28+
29+
<p>할머니가 외운 단어가 주어졌을 때, 이 전화를 걸기 위해서 필요한 최소 시간을 구하는 프로그램을 작성하시오.</p>
30+
31+
### 입력
32+
33+
<p>첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.</p>
34+
35+
### 출력
36+
37+
<p>첫째 줄에 다이얼을 걸기 위해서 필요한 최소 시간을 출력한다.</p>
38+
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
let word = readLine()!.map { String($0) }
2+
let alphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".map { String($0) }
3+
var alphaMap = alphabets.reduce(into: [:]) {
4+
$0[$1] = 0
5+
}
6+
for i in stride(from: 0, to: alphabets.count-4-3-4, by: 3) {
7+
alphaMap[alphabets[i]] = 3 + i/3
8+
alphaMap[alphabets[i+1]] = 3 + i/3
9+
alphaMap[alphabets[i+2]] = 3 + i/3
10+
}
11+
for i in stride(from: alphabets.count-4-3-4, to: alphabets.count-4-3, by: 1) {
12+
alphaMap[alphabets[i]] = 8
13+
}
14+
for i in stride(from: alphabets.count-4-3, to: alphabets.count-4, by: 1) {
15+
alphaMap[alphabets[i]] = 9
16+
}
17+
for i in stride(from: alphabets.count-4, to: alphabets.count, by: 1) {
18+
alphaMap[alphabets[i]] = 10
19+
}
20+
let answer = word.compactMap { alphaMap[$0] }.reduce(0, +)
21+
print(answer)

0 commit comments

Comments
 (0)