42860 - 조이스틱

LeeKyoungChang·2022년 6월 28일
0

Algorithm

목록 보기
198/203
post-thumbnail

📚 42860 - 조이스틱

조이스틱

 

이해

블로그를 참고했다.
알파벳 변경 최솟값을 추가하고
알파벳 다음부터 연속된 A 문자열 찾는 문제이다.

참고 블로그 1

참고 블로그2

 

소스

def solution(name):  
    # 조이스틱 조작 횟수  
    answer = 0  
  
    # 기본 최소 좌우이동 횟수는 길이 - 1    min_move = len(name) - 1  
  
    for i, char in enumerate(name):  
        # 해당 알파벳 변경 최솟값 추가  
        answer += min(ord(char) - ord('A'), ord('Z') - ord(char) + 1)  
  
        # 해당 알파벳 다음부터 연속된 A 문자열 찾기  
        next = i + 1  
        while next < len(name) and name[next] == 'A':  
            next += 1  
  
        # 기존, 연속된 A의 왼쪽시작 방식, 연속된 A의 오른쪽시작 방식 비교 및 갱신  
        min_move = min([min_move, 2 * i + len(name) - next, i + 2 * (len(name) - next)])  
  
    # 알파벳 변경(상하이동) 횟수에 좌우이동 횟수 추가  
    answer += min_move  
    return answer

 

profile
"야, (오류 만났어?) 너두 (해결) 할 수 있어"

0개의 댓글