프로그래머스/Lv. 2

17. 조이스틱 ★★ - 보류

Seohyeong Lee 2024. 7. 19. 23:28

유형: 그리디? 완전탐색?

풀이 시간: 인터넷 검색

 

1. 나의 풀이

def solution(name):
    answer = 0
    a = ord('A')
    z = ord('Z')
    olist = []
    for i in name:
        n = min (abs(ord(i) - a), abs(z - ord(i) + 1))    
        olist.append(n)
        answer += n
        
    cnt1 = 0
    for i in range(len(olist)-1):
        if olist[i+1:].count(0) == len(olist[i+1:]):
            break
        cnt1 += 1
    
    cnt2 = 0
    olist.append(olist.pop(0))
    olist.reverse()

    for i in range(len(olist)-1):
        if olist[i+1:].count(0) == len(olist[i+1:]):
            break
        cnt2 += 1
    print(cnt1, cnt2)
    return answer + min(cnt1, cnt2)

 

이 경우는 두 가지 경우 (그냥 정석대로 쭉 / 반대로 쭉) 밖에 고려하지 못하므로 틀린 풀이가 된다.