본문 바로가기
  • FREEDOM
COMPUTER/프로그래머스

[Python] 조이스틱

by 마음대로 2021. 12. 2.
 

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

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

programmers.co.kr

from string import ascii_uppercase

def solution(name):
    answer = 0
    pos = 0
    moves=[]
    
    #문제를 잘 읽자
    #조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다.
    
    #알파벳 리스트 만들기
    alpha_list = list(ascii_uppercase)
    
    
    #문제의 단어 하나씩 거리 분석
    for i in range(len(name)):
        end = len(alpha_list)
        word_idx = alpha_list.index(name[i])
        
        moves.append(min(word_idx,end-word_idx))
    
    while True:
        answer += moves[pos]
        moves[pos] = 0

        if sum(moves) == 0: break

        left = 1
        right = 1

        while moves[pos - left] == 0:
            left += 1

        while moves[pos + right] == 0:
            right += 1

        if left >= right:
            pos += right
            answer += right

        else:
            pos -= left
            answer += left
    
    return answer

1. 알파벳 리스트 만들기

2. 알파벳 인덱스를 A 또는 Z 어디서 세는게 이득인지에 따라 작은 거 추출

3. A개수에 따라서 왼쪽으로 갈지 오른쪽으로 갈지 결정

'COMPUTER > 프로그래머스' 카테고리의 다른 글

[Python] 피로도  (0) 2021.12.08
[Python] 다리를 지나는 트럭  (0) 2021.12.06
[Python]구명보트  (0) 2021.11.22
[Python] 주식가격  (0) 2021.11.16
[Oracle]입양 시각 구하기(2)  (0) 2021.11.15

댓글