[1일1코테] 프로그래머스 키패드 누르기

Logging·2022년 2월 12일
0

1일1코테

목록 보기
1/5

1일 1코테 푸는 것을 목표 정리 시작으로 다시 살리는 블로그

- 풀이 방향 :

  1. keyped 저장하는 dictionary 선언
  2. 왼쪽, 오른쪽 저장되는 변수? 선언
  3. 입력 받은 숫자가 왼쪽, 오른쪽, 가운데 열에 있는 지
  4. 가운데 열 숫자 일시,
    4.1. keyped 위치에 맞게 왼쪽, 오른쪽 길이 구하기
    좌표간의 길이를 구할 때, 삼각형 길이? 구하는 식으로
    4.2. 왼쪽, 오른쪽 길이 같을 시, 입력 받은 hand로 반영

- 최종 코드 :

def solution(numbers, hand):
    answer = ''  
    #key value
    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]}
    start_L='*'
    start_R='#'    
    
    for num in numbers :      
        #왼손 엄지 사용
        if num in [1,4,7] :
            answer +='L'
            start_L=num   
            
        #오른손 엄지 사용
        elif num in [3,6,9] :
            answer +='R'
            start_R=num
            
        #중앙 
        else :
            L_dis =0
            R_dis=0
            R_dis=abs(dic[num][0]-dic[start_R][0]) + abs(dic[num][1]-dic[start_R][1])
            L_dis=abs(dic[num][0]-dic[start_L][0]) + abs(dic[num][1]-dic[start_L][1])
            
            if L_dis < R_dis :
                answer +='L'
                start_L=num
                
            elif L_dis > R_dis :
                answer +='R'
                start_R=num
                
            else  :
                if hand == 'left' :
                    answer +='L'
                    start_L=num
                else :
                    answer +='R'
                    start_R=num
                    
    return answer
profile
개발새발쿼카발로 기록중💾

0개의 댓글