728x90
https://www.acmicpc.net/problem/18238
18238번: ZOAC 2
2019년 12월, 두 번째로 개최된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다. 작년 ZOAC의 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로운 규칙을 고안해
www.acmicpc.net
문제
2019년 12월, 두 번째로 개최된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다.
작년 ZOAC의 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로운 규칙을 고안해냈다!
규칙은 이러하다.
그림과 같은 원판에 문자들이 순서대로 적혀있다. 처음 순간에 화살표는 'A'를 가리키고 있다.
원판은 왼쪽 또는 오른쪽으로 돌릴 수 있다. 원판을 한 칸 돌리는 데에는 1의 시간이 소요된다.
화살표가 가리키고 있는 문자를 출력할 수 있다. 문자를 출력하는 데에 걸리는 시간은 없다.
시간이 너무 오래 걸리면 지루해할 ZOAC의 참가자들을 위해 성우는 해당 문자열을 앞에서부터 차례대로 최대한 빠르게 출력하려고 한다.
바쁜 성우를 위하여 해당 문자열을 출력하는 데 걸리는 시간의 최솟값을 구해보자.
✔ 풀이
data = list(input())
start='A'
time=0
for i in data:
left=ord(i) - ord(start)
right = ord(start) - ord(i)
if left<0:
left+=26
elif right <0:
right+=26
time+=min(left,right)
start=i
print(time)
왼쪽으로 도는 경우와 오른쪽으로 도는 경우 중 더 짧은 쪽을 선택하면 된다.
값이 음수인 경우만 주의하면 되고 아스키 코드 변환 함수인 ord()를 사용해 쉽게 풀 수 있었다.
728x90
반응형
'알고리즘' 카테고리의 다른 글
[BOJ/Python3(파이썬)] 백준 2805번: 나무 자르기 (0) | 2021.12.22 |
---|---|
[BOJ/Python3(파이썬)] 백준 2798번: 블랙잭 (0) | 2021.12.22 |
[BOJ/Python3(파이썬)] 백준 11399번: ATM (0) | 2021.12.22 |
[BOJ/Python3(파이썬)] 백준 2217번: 로프 (0) | 2021.12.22 |
[BOJ/Python3(파이썬)] 백준 2839번: 설탕 배달 (0) | 2021.12.22 |