18238번: ZOAC 2백준/문제2024. 4. 23. 15:46
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/18238
언어 : Kotlin
문제 설명 :
2019년 12월, 두 번째로 개최된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다.
작년 ZOAC의 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로운 규칙을 고안해냈다!
규칙은 이러하다.
- 그림과 같은 원판에 문자들이 순서대로 적혀있다. 처음 순간에 화살표는 'A'를 가리키고 있다.
- 원판은 왼쪽 또는 오른쪽으로 돌릴 수 있다. 원판을 한 칸 돌리는 데에는 1의 시간이 소요된다.
- 화살표가 가리키고 있는 문자를 출력할 수 있다. 문자를 출력하는 데에 걸리는 시간은 없다.
시간이 너무 오래 걸리면 지루해할 ZOAC의 참가자들을 위해 성우는 해당 문자열을 앞에서부터 차례대로 최대한 빠르게 출력하려고 한다.
바쁜 성우를 위하여 해당 문자열을 출력하는 데 걸리는 시간의 최솟값을 구해보자.
입력 :
첫 번째 줄에 알파벳 대문자로 구성된 문자열이 주어진다. 문자열의 길이는 최대 100자이다. 빈 문자열은 주어지지 않는다.
출력 :
입력으로 주어진 문자열을 출력하는 데에 걸리는 시간의 최솟값을 출력한다.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 512MB
입출력 예 :
입력 | 출력 |
ZOAC | 26 |
LBOLVUEEPMOIENMG | 100 |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import kotlin.math.abs
import kotlin.math.min
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
var cnt = 0
var cur = 'A'
readLine().forEachIndexed { index, c ->
val temp = abs(c - cur)
cnt += min(temp, 26 - temp)
cur = c
}
bw.write("$cnt")
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
2866번: 문자열 잘라내기 (0) | 2024.04.24 |
---|---|
16172번: 나는 친구가 적다 (Large) (0) | 2024.04.24 |
9046번: 복호화 (0) | 2024.04.23 |
14647번: 준오는 조류혐오야!! (0) | 2024.04.22 |
16719번: ZOAC (0) | 2024.04.22 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!