문제 보러 가기 👈 클릭!
1) ^ v 방향 조작
^으로 이동했을 경우 조작 횟수와 v으로 이동했을 경우 조작 횟수를 비교하여 작은값을 갖는 경우를 선택
2) < > 방향 조작
현재 위치에서 왼쪽 오른쪽으로 'A'가 아닌 조작이 필요한 문자를 만날때 까지 이동할 때, 더 작은 값을 가지는 방향을 선택
def solution(name):
counts = [min(ord(char)-ord('A'), ord('Z')-ord(char)+1) for char in name]
answer, idx = 0, 0
while 1:
answer += counts[idx]
counts[idx] = 0
if sum(counts) == 0:
break
left, right = 1, 1 #기본이동 횟수
while counts[idx - left] == 0:
left += 1
while counts[idx + right] == 0:
right += 1
answer += left if left < right else right
idx += -left if left < right else right
return answer