본문 바로가기
Algorithm/Programmers

[프로그래머스] 67256 파이썬 - 키패드 누르기

by chobbo 2024. 9. 5.

 

풀이

키패드의 숫자와 각 숫자에 맞는 좌표를 미리 딕셔너리에 선언해두고 풀었다.

나머지는 단순 구현이었다.

if문을 사용해 조건만 잘 걸어주면 어렵지 않게 풀 수 있는 문제였다.

 

코드

def solution(numbers, hand):
    answer = ''
    keypad = {'1':(0,0), '2':(0,1), '3':(0,2),
           '4':(1,0), '5':(1,1), '6':(1,2),
           '7':(2,0), '8':(2,1), '9':(2,2),
           '*':(3,0), '0':(3,1), '#':(3,2)}

    left = keypad['*']
    right = keypad['#']
    
    for number in numbers:
        if number == 1 or number == 4 or number == 7:
            answer += 'L'
            left = keypad[str(number)] 
        elif number == 3 or number == 6 or number == 9:
            answer += 'R'
            right = keypad[str(number)] 
        else:   
            leftDistance = abs(left[0]-keypad[str(number)][0])+abs(left[1]-keypad[str(number)][1])
            rightDistance = abs(right[0]-keypad[str(number)][0])+abs(right[1]-keypad[str(number)][1])
            
            if leftDistance < rightDistance:
                answer += 'L'
                left = keypad[str(number)]
            elif leftDistance > rightDistance:
                answer += 'R'
                right = keypad[str(number)]
            else:
                if hand == "right":
                    answer += 'R'
                    right = keypad[str(number)]
                else:
                    answer += 'L'
                    left = keypad[str(number)]
                    
    return answer

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr