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

이정연·2022년 11월 7일
0

CodingTest

목록 보기
92/165
post-thumbnail

설계

  • 1단계 문제치고는 구현이 꽤 복잡하였다.
  • 붉은색으로 표시된 항목이 문제의 초기 조건이다.
  • 딕셔너리를 일일이 직접 구현한 것이 무식해보이기는 하지만 규칙을 찾다가 모르겠어서 그냥 다 했다.

코드

def solution(numbers, hand):
    answer = ''
    left = '*'
    right = '#'
    dist = {
        2:{
            1:1,2:0,3:1,4:2,5:1,6:2,7:3,8:2,9:3,0:3,'*':4,'#':4
        },
        5:{
            1:2,2:1,3:2,4:1,5:0,6:1,7:2,8:1,9:2,0:2,'*':3,'#':3
        },
        8:{
            1:3,2:2,3:3,4:2,5:1,6:2,7:1,8:0,9:1,0:1,'*':2,'#':2
        },
        0:{
            1:4,2:3,3:4,4:3,5:2,6:3,7:2,8:1,9:2,0:0,'*':1,'#':1
        }
    }
    for n in numbers:
        if n in (1,4,7):
            answer += 'L'
            left = n
        elif n in (3,6,9):
            answer += 'R'
            right = n
        else:
            if dist[n][left] == dist[n][right]:
                if hand == 'right':
                    answer += 'R'
                    right = n
                else:
                    answer += 'L'
                    left = n
            elif dist[n][left] > dist[n][right]:
                answer += 'R'
                right = n
            else:
                answer += 'L'
                left = n
    return answer
profile
0x68656C6C6F21

0개의 댓글