5622번: 다이얼백준/단계별로 풀어보기2023. 5. 24. 15:26
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/5622
언어 : Kotlin
문제 설명 :
상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다.
전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다.
숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.
상근이의 할머니는 전화 번호를 각 숫자에 해당하는 문자로 외운다. 즉, 어떤 단어를 걸 때, 각 알파벳에 해당하는 숫자를 걸면 된다. 예를 들어, UNUCIC는 868242와 같다.
할머니가 외운 단어가 주어졌을 때, 이 전화를 걸기 위해서 필요한 최소 시간을 구하는 프로그램을 작성하시오.
- 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.
- 첫째 줄에 다이얼을 걸기 위해서 필요한 최소 시간을 출력한다.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
WA | 13 |
UNUCIC | 36 |
풀이 :
import java.io.*
fun main(args: Array<String>) {
val br = BufferedReader(InputStreamReader(System.`in`))
val bw = BufferedWriter(OutputStreamWriter(System.out))
val call = br.readLine().chunked(1)
val numGroup = arrayOf(arrayOf("A", "B", "C"), arrayOf("D", "E", "F"), arrayOf("G", "H", "I"), arrayOf("J", "K", "L"), arrayOf("M", "N", "O"), arrayOf("P", "Q", "R", "S"), arrayOf("T", "U", "V"), arrayOf("W", "X", "Y", "Z"))
var cnt = 0
for (i in call.indices) {
for (j in numGroup.indices) {
if (numGroup[j].contains(call[i])) cnt += j + 3
}
}
bw.write("$cnt")
bw.flush()
bw.close()
}
'백준 > 단계별로 풀어보기' 카테고리의 다른 글
25083번: 새싹 (0) | 2023.05.25 |
---|---|
11718번: 그대로 출력하기 (0) | 2023.05.24 |
2908번: 상수 (0) | 2023.05.24 |
1152번: 단어의 개수 (0) | 2023.05.24 |
2675번: 문자열 반복 (0) | 2023.05.24 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!