알고리즘/programmers

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

jungeun960 2021. 5. 4. 15:15

프로그래머스 2020 카카오 인턴십

# 키패드 누르기

  • Point. 키패드의 좌표를 딕셔너리에 저장해 거리를 구할 수 있도록 한다.
  1. 왼손(*)과 오른손(#) 초기값 설정
  2. 숫자 1,4,7 의 경우, 왼손 & 왼손 위치 저장
  3. 숫자 3,6,9 의 경우, 오른손 & 오른손 위치 저장
  4. 숫자 2,5,8,0 의 경우
    1. 현재 위치와 왼손, 오른손간의 거리 구하기
    2. 오른손이 가까우면 오른손 & 오른손 위치 저장
    3. 왼손이 가까우면 왼손 & 왼손 위치 저장
    4. 위치가 같으면 hand에서 왼손잡이와 오른손잡이를 확인해
      1. 왼손잡이면 왼손 & 왼손 위치 저장
      2. 오른손잡이면 오른손 & 오른손 위치 저장
def solution(numbers, hand):
    answer = ''
    l_x,l_y = (3,0)
    r_x,r_y = (3,2)
    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),
          0 : (3,1)}
    
    for i in numbers:
        if i in [1,4,7]:
            answer+="L"
            l_x,l_y = dic[i]
        elif i in [3,6,9]:
            answer +="R"
            r_x,r_y = dic[i]
        else:
            c_x,c_y = dic[i]
            l = abs(c_x - l_x) + abs(c_y - l_y)
            r = abs(c_x - r_x) + abs(c_y - r_y)
            
            if l>r:
                answer += "R"
                r_x,r_y = c_x,c_y
            elif l<r:
                answer += "L"
                l_x,l_y = c_x,c_y
            else:
                if hand == "right":
                    answer += "R"
                    r_x,r_y = c_x,c_y
                else:
                    answer += "L"
                    l_x,l_y = c_x,c_y
            
    return answer

 

반응형