일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 구름톤 챌린지
- 코딩트리조별과제
- 파이썬
- 선린고등학교
- 서울대학교
- newbie programming contest
- 알고리즘
- 사내자격증
- 삼성전자 코딩테스트
- 2017
- 프로그래밍 경시대회
- 알고리즘특강
- 코드트리
- 파일 생성 불가
- 코딩테스트
- 삼성전자
- PRO
- 인하대학교
- 전국 대학생 프로그래밍 대회 동아리 연합
- iucpc
- ICPC
- agcu컵
- certi
- Python
- B형
- 2023
- 백준
- 코딩테스트실력진단
- 구현
- 알고리즘 특강
Archives
- Today
- Total
니노니나니
[백준/18238번] ZOAC 2 - B2/Python 본문
https://www.acmicpc.net/problem/18238
문제
2019년 12월, 두 번째로 개최된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다.
작년 ZOAC의 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로운 규칙을 고안해냈다!
규칙은 이러하다.
- 그림과 같은 원판에 문자들이 순서대로 적혀있다. 처음 순간에 화살표는 'A'를 가리키고 있다.
- 원판은 왼쪽 또는 오른쪽으로 돌릴 수 있다. 원판을 한 칸 돌리는 데에는 1의 시간이 소요된다.
- 화살표가 가리키고 있는 문자를 출력할 수 있다. 문자를 출력하는 데에 걸리는 시간은 없다.
시간이 너무 오래 걸리면 지루해할 ZOAC의 참가자들을 위해 성우는 해당 문자열을 앞에서부터 차례대로 최대한 빠르게 출력하려고 한다.
바쁜 성우를 위하여 해당 문자열을 출력하는 데 걸리는 시간의 최솟값을 구해보자.
입력
첫 번째 줄에 알파벳 대문자로 구성된 문자열이 주어진다. 문자열의 길이는 최대 100자이다. 빈 문자열은 주어지지 않는다.
풀이
word = input()
dial = [chr(x) for x in range(65, 91)]
prev = 'A'
move = 0
for w in word:
gap = abs(ord(prev) - ord(w))
move += min(gap,26-gap)
prev = w
print(move)
해결방법
'A'에 시작한다는 것을 인지하고 옛날에 사용하던 다이얼 전화를 생각해서 이동 횟수를 최소화하도록 구현하면 되는 문제.
'알고리즘 > 백준' 카테고리의 다른 글
[백준/30802번] 웰컴 키트 - B3/Python (1) | 2024.07.31 |
---|---|
[백준/16719번] ZOAC - G5/Python (0) | 2024.07.31 |
[백준/20210번] 파일 탐색기 - G3/Python (0) | 2024.07.30 |
[백준/10429번] QUENTO - G4/Python (0) | 2024.07.29 |
[백준/27921번] 동전 퍼즐 - S1/Python (0) | 2024.07.28 |