본문 바로가기

알고리즘/카카오 EASY

키패드 누르기 (Level 1)

내 풀이

 

  1. 키 패드 숫자를 미리 딕셔너리에 저장했다.
  2. n이 키패드 오른쪽에 위치하는 숫자는 오른손, 키패드 왼쪽에 위치하는 숫자는 왼손으로 누르도록 했다.
  3. 숫자를 누를 때마다 손의 위치를 업데이트시켰다.
  4. n이 키패드 중앙에 위치하는 숫자일 경우, 맨해튼 거리를 구하고 손의 위치를 업데이트시켰다.

 

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], 0: [3, 1]}
    left, right = [3, 0], [3, 2]
    for n in numbers:
        if n in [3, 6, 9]:
            right = dic[n]
            answer += 'R'
        elif n in [1, 4, 7]:
            left = dic[n]
            answer += 'L'
        else:
            r_dist = abs(dic[n][0]-right[0]) + abs(dic[n][1]-right[1])
            l_dist = abs(dic[n][0]-left[0]) + abs(dic[n][1]-left[1])
            if (r_dist < l_dist) or (r_dist == l_dist and hand == 'right'):
                right = dic[n]
                answer += 'R'
            elif (r_dist > l_dist) or (r_dist == l_dist and hand == 'left'):
                left = dic[n]
                answer += 'L'
            
    return answer

 

총평

문제에 나와있는 대로만 구현하면 되는 문제였다.

'알고리즘 > 카카오 EASY' 카테고리의 다른 글

메뉴 리뉴얼 (Level 2)  (0) 2022.06.25
크레인 인형뽑기 게임 (Level 1)  (0) 2022.06.24
숫자 문자열과 영단어 (Level 1)  (0) 2022.05.25
오픈채팅방 (Level 2)  (0) 2022.05.24
문자열 압축 (Level 2)  (0) 2022.05.23