조이스틱

bird.j·2021년 6월 29일
0

프로그래머스

목록 보기
21/53

프로그래머스

1) 상하로 최소 거리 구해서 알파벳 바꾸기

: 각각의 문자는 A, B, C...로 가는 방법 / A, Z, Y..로 뒤에서 가는 방법 둘 중 최소를 선택

2) 좌우로 최소 거리 구해서 방향 정한 후 이동하기

: 다음 문자를 왼쪽 문자를 바꾸기/ 오른쪽 문자를 바꾸기

def solution(name):
    # 상하조정으로 알파벳 바꾸기
    cnt = [min(ord(n)-ord('A'), ord('Z')-ord(n)+1) for n in name]
    i, ans = 0, 0
    
    while True:
        ans += cnt[i]
        cnt[i] = 0
        if sum(cnt) == 0:
            return ans
        
        # 좌우 이동방향 정하기
        left, right = 1, 1
        while cnt[i-left] == 0:
            left += 1
        while cnt[i+right] == 0:
            right += 1
            
        # 인덱스 조정
        ans += left if left < right else right
        i += -left if left < right else right

왜 cnt[i]에 0을 넣는지 완전히 이해가 안됐다..ㅠ
reference

0개의 댓글