문제풀이/그리디

[파이썬] [그리디] Pro 조이스틱

승무_ 2022. 2. 16. 14:52

문제

https://programmers.co.kr/learn/courses/30/lessons/42860?language=python3 

 

코딩테스트 연습 - 조이스틱

조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다

programmers.co.kr

 

코드

def solution(name):
    answer = 0
    length = len(name)

    move = length - 1
    temp=[n for n in name]
    for i in range(len(temp)):
        answer += min(ord(temp[i]) - ord('A'), ord('Z') - ord(temp[i]) + 1)

        index = i + 1
        #연속 되는 A 끝 index
        while index < length and temp[index] == 'A':
            index += 1
        #순서대로 가는것과, 돌아가는것 비교
        move = min(move, i * 2 + length - index)
        #BBBAAAAAB와 같이 처음부터 뒷부분을 갔다가 다시 앞에서부터
        move = min(move, (length - index) * 2 + i)

    return answer + move