카카오 인턴 키패드 누르기_프로그래머스_파이썬

  • 다른 사람의 글을 참고하고 풀었습니다.
  • 키패드를 dict로 만들어주고 매번 거리를 계산해주는 distance함수를 만들어서 풀면 수월합니다
pos = {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) }

        
def distance(a,b):
    return abs(pos[a][0] - pos[b][0]) + abs(pos[a][1] - pos[b][1]) 

def solution(numbers, hand):
    l = '*' 
    r = '#'
    answer = ""    
    for i in numbers:
        print(l,r,i)
        if i in (1,4,7):
            answer += "L"
            l = i
        elif i in (3,6,9):
            answer +="R"
            r = i
        elif i in (2,5,8,0):
            if distance(l,i) > distance(r,i):
                answer +="R"
                r = i
            elif distance(l,i) < distance(r,i):
                answer += "L"
                l = i
            elif  distance(l,i) == distance(r,i) :
                answer+= hand[0].upper()
                if hand == "right":
                    r = i
                else :
                    l = i
    return answer
print(solution([7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2],"left"))
* # 7
7 # 0
7 0 8
8 0 2
2 0 8
2 8 3
2 3 1
1 3 5
5 3 7
7 3 6
7 6 2
LRLLRRLLLRR

Comments