Development

[프로그래머스] 조이스틱 본문

코딩테스트/Python

[프로그래머스] 조이스틱

yo~og 2021. 9. 4. 21:52
반응형

내 코드

def solution(name):
    answer = 0
    cursor = 0
    
    l = [chr(ord('A')+i) for i in range(26)]
    s = ['A' for i in range(len(name))]
    
    while True:
        i = 0
        
        idx = l.index(name[cursor])
        answer += min(idx,26-idx)
        s[cursor] = name[cursor]
        
        if s == list(name): 
            break
            
        while True:
            if s[(cursor+i)%len(s)] != name[(cursor+i)%len(s)]:
                cursor+=i
                answer+=i
                break
            elif s[(cursor-i)%len(s)] != name[(cursor-i)%len(s)]:
                cursor-=i
                answer+=i
                break
            i+=1
        
    return answer

으.. 코드 드러워 ..ㅋㅋㅋㅋㅋㅋ

내가 푼 방법 설명하겠다.,, 으으.. 

파라미터로 준 name과 같은 길이의 'A' 리스트를 만든다. ex) "JAN"이면 ['A','A','A']

이렇게 만든 A리스트를 하나하나 바꿔가며 name을 리스트로 변환한것과 같을 때 까지 answer을 더해가게 만들었다.

현재 cursor가 있는 위치를 cursor라고 하였다. 현재 커서가 있는 곳의 문자열을 미리 만들어둔 l리스트에서 찾아 조이스틱을 움직이는 최솟값을 찾는다. 최소값을 찾으면 답에 더하고 A리스트를 바꾼다.

이제 커서가 앞으로 갈지 뒤로갈지 정해야한다. 이것은 현재 커서 위치에서 가장 가까운 A리스트와 name리스트의 다른 곳 위치를 찾는다. 커서를 옮기고 answer에 움직인 커서만큼 더해준다.

이 과정을 A리스트와 name리스트가 같아질때까지 반복한다.

 

음,, 다른사람 코드도 딱히 좋아보이진 않는다.. 푼사람이 8000명대라서 그런가., 댓글도 별로 안달려있고.. 그리고 테스트케이스도 중간에 더 추가됐다.. 오늘은 다른사람풀이 리뷰는 넘어가야징

반응형
Comments