문제풀이/프로그래머스

[프로그래머스][Lv1] - 키패드 누르기 (Python)

얄루몬 2021. 11. 3. 18:34

def solution(numbers, hand):
    answer = ""
    #거리 계산을 위한 좌표 준비 
    dic = {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]}
    ls = dic['*']
    rs = dic['#']
    
    for i in numbers:
        now = dic[i] #현재 위치
        if i in [1,4,7]:
            answer += "L"
            ls = now
        elif i in [3,6,9]:
            answer += "R"
            rs = now
        else:
            ld = 0
            rd = 0
            for a,b,c in zip(ls,rs,now):
                ld += abs(a-c)
                rd += abs(b-c)
            if ld < rd:
                answer += "L"
                ls = now
            elif ld > rd:
                answer += "R"
                rs = now
            else:
                if hand == "right":
                    answer += "R"
                    rs = now
                else:
                    answer += "L"
                    ls = now
    return answer