https://programmers.co.kr/learn/courses/30/lessons/42860
ex) JAN
up은 A -> B -> ... -> J
down은 A -> Z -> Y -> ... -> J
ord('A') : A의 ASCII값이 나온다#up, down up = ord(a) - ord('A') down = 26 - up result += min(up, down)
1 + 2 + 3에서 2 (돌아오는 화살표)
2 -> left vs right 중 작은 것min(left_right, right_left)
def solution(name):
result = 0
shift = len(name) - 1
for idx, a in enumerate(name):
#up, down
up = ord(a) - ord('A')
down = 26 - up
result += min(up, down)
#left, right
# A : -> , <- 비교
if a == 'A':
a_idx = idx
while a_idx < len(name) and name[a_idx] == 'A':
a_idx += 1
if idx == 0:
left_right = 0
else:
left_right = idx - 1
right_left = len(name) - a_idx
shift = min(shift, left_right + right_left + min(left_right, right_left))
result += shift
return result