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

김혁·2022년 5월 28일
0

백준알고리즘

목록 보기
7/13

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

나의 코드)

def solution(numbers, hand):
    #         1,    2,    3,    4,    5,    6,    7,    8,     9,   0
    phone =[[0,0],[0,1],[0,2],[1,0],[1,1],[1,2],[2,0],[2,1],[2,2],[3,1]]
    result = []
    # 초기 좌 우손가락
    lx,ly = 3,0
    rx,ry = 3,2
    
    left_arr =[1,4,7]
    right_arr = [3,6,9]
    
    for number in numbers:
        
        # 1,4,7 3,6,9 해당 손가락
        if number in left_arr:
            result.append("L")
            lx,ly = phone[number-1][0],phone[number-1][1]
            continue
            
        elif number in right_arr:
            result.append("R")
            rx,ry = phone[number-1][0],phone[number-1][1]
            continue
    
    # 거리재기
        else:
            r_ds = abs((rx-phone[number-1][0]))+abs((ry-phone[number-1][1]))
            l_ds = abs((lx-phone[number-1][0]))+abs((ly-phone[number-1][1]))
        
            if l_ds == r_ds:
            
                if hand == "right":
                    rx,ry = phone[number-1][0],phone[number-1][1]
                    result.append("R")
                
                
                else:
                    lx,ly = phone[number-1][0],phone[number-1][1]
                    result.append("L")
                
            
            if l_ds > r_ds:
                rx,ry = phone[number-1][0],phone[number-1][1]
                result.append("R")
            
            if l_ds < r_ds:
                lx,ly = phone[number-1][0],phone[number-1][1]
                result.append("L")
                     
    answer = "".join(result)        
     
    return answer
  

나의 답은 이렇다. 일단 문제는 맞았다. 시간이 살짝 걸린이유는 바보처럼 phone의 인덱스를 1부터 시작하는 것으로 생각을 해놓고 phone을 인덱싱할때는 number -1이 아닌 number로 생각하고 문제를 풀었다.

...살짝 실력상승한것 같기도..

profile
군도리

0개의 댓글