어디까지 갈 수 있을까?
[그리디] 백준 18238 ZOAC 2 본문
문제링크 www.acmicpc.net/problem/18238
index를 사용하는 문제
[답코드]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import sys
input=sys.stdin.readline
n = input().strip() #ZOAC
alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
result = 0
now = alpha.index('A')
for i in n:
target = alpha.index(i)
if abs(target-now) <= 13 :
result+=abs(target-now)
else:
result+=26-abs(target-now)
now=target
print(result)
|
cs |
[풀이법]
now에 현재 알파벳의 위치, target에 가고자 알파벳의 위치를 저장한다
abs(target-now)가 13이면 마주보고 있는 문자이다 (ex : A와 N의 거리는 13이다)
target과 now의 거리가 13이하면 오른쪽으로 돌려도 되지만 13 초과라면 반대쪽으로 돌려야 최솟값을 구할 수 있다
전체 알파벳의 갯수 26에서 target과 now의 거리를 빼면 반대쪽으로 돌렸을 때의 최솟값을 구할 수 있다.
브론즈라기에 간단하게 나오는 문제는 아니었던 거 같다
문자와 문자 사이의 거리를 구하기 위해 문자열.index() or list.index() 가 편리하다는 점,
문자열이 리스트처럼 인덱스값을 갖고 있는 점을 항상 숙지하면서 문제를 풀어야겠다.
728x90
'알고리즘 > 문제' 카테고리의 다른 글
[플로이드 워셜] 백준 11403 경로 찾기 (0) | 2021.02.27 |
---|---|
[이분탐색] 백준 7795 먹을 것인가 먹힐 것인가 (0) | 2021.02.19 |
[BFS/DFS] 백준 2606 바이러스 (0) | 2021.02.17 |
[DP] 백준 2193 이친수 (0) | 2021.02.10 |
[그리디] 백준 1783 병든 나이트 (0) | 2021.02.10 |
Comments