[프로그래머스] 42860번 조이스틱 (python)

Effy_ee·2024년 7월 1일
0

코딩테스트

목록 보기
104/118
post-thumbnail

📚문제

https://school.programmers.co.kr/learn/courses/30/lessons/42860

📖 풀이

def solution(name):
    answer = 0
    for char in name:
        answer+=min(ord(char)-ord('A'),ord('Z')-ord(char)+1)

    n=len(name)
    cursor=n-1

    for i in range(n):
        next_idx=i+1
        while next_idx<n and name[next_idx]=='A':
            next_idx+=1
        cursor=min(cursor,2*i+n-next_idx,i+2*n-2*next_idx)
    answer+=cursor
    return answer

1. 왼쪽으로부터 연속된 A로

i: 현재 인덱스
n: 총 길이
next_idx: 현재 인덱스 다음 A가 아닌 알파벳

따라서, 2i+n-next_idx

2. 오른쪽으로부터 연속된 A로

따라서, i+2(n-next_idx)

각 자리에서 비교하면서 가장 커서를 작게 움직일 수 있는 곳을 찾아서 업데이트 하게 된다. 초기 값은 A가 하나도 없는 경우인 n-1

0개의 댓글