[프로그래머스] 키패드 누르기

Jin Lee·2022년 4월 29일
0

프로그래머스 Lv.1

목록 보기
30/32
post-thumbnail

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/67256

구현 문제로 문제내용을 그대로 코드화 시켰기 때문에 자세한 설명은 생략한다.

def solution(numbers, hand):
    keypad = [[1, 2, 3], [4, 5, 6], [7, 8, 9], ["*", 0, '#']]
    answer = []
    numbers = list(map(int, numbers))
    left_idx = [3,0]
    right_idx = [3,2]
    
    for number in numbers:
        if number == 1 or number == 4 or number == 7:
            answer.append('L')
            left_idx = [number // 3, 0]
        elif number == 3 or number == 6 or number == 9:
            answer.append('R')
            right_idx = [number // 4, 2]
        else:
            for i in range(4):
                for j in range(3):
                    if keypad[i][j] == number:
                        left_move = abs(left_idx[0] - i) + abs(left_idx[1] - j)
                        right_move = abs(right_idx[0] - i) + abs(right_idx[1] - j)
                        now = [i, j]
            if left_move > right_move:
                answer.append('R')
                right_idx = now
            elif left_move < right_move:
                answer.append('L')
                left_idx = now
            else:
                if hand == "right":
                    answer.append('R')
                    right_idx = now
                else:
                    answer.append('L')
                    left_idx = now
        
    return ''.join(answer)
profile
깃허브 : https://github.com/jinlee9270

0개의 댓글