파이썬 코딩테스트/프로그래머스

프로그래머스 / 키패드 누르기 / 파이썬

S.T.Lee 2022. 2. 24. 17:54

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

def solution(numbers, hand):
    answer = ''
    left = "*"
    right  = "#"
    num_list = [[1,2,3],[4,5,6],[7,8,9],["*",0,"#"]]
    num_dic = {}
    for i in range(len(num_list)):
        for j in range(len(num_list[i])):
            num_dic[num_list[i][j]] = [i,j]
      
    for num in numbers:
        if num in [1,4,7]:
            answer+="L"
            left = num
        elif num in [3,6,9]:
            answer+="R"
            right = num
        else:
            cur_num = num_dic[num]
            left_num = num_dic[left]
            right_num = num_dic[right]
            
            left_len = 0
            right_len = 0
            for n in range(len(left_num)):
                left_len += abs(cur_num[n] - left_num[n])
                right_len += abs(cur_num[n] - right_num[n])
            
            if hand == "right":
                if left_len >= right_len:
                    right = num
                    answer+="R"
                else:
                    left=num
                    answer+="L"
            else:
                if left_len > right_len:
                    right = num
                    answer+="R"
                else:
                    left=num
                    answer+="L"   
                
    return answer