어디까지 갈 수 있을까?

[그리디] 백준 18238 ZOAC 2 본문

알고리즘/문제

[그리디] 백준 18238 ZOAC 2

_Min 2021. 2. 10. 16:56

문제링크 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
 
= 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
Comments