본문 바로가기

컴퓨터/코테

카카오 기출 - 키패드 누르기

def solution(numbers, hand):
    answer = ''
    middleNum = {
        2: [0, 1],
        5: [1, 1],
        8: [2, 1],
        0: [3, 1]
    }
    l = [3, 0]
    r = [3, 2]
    for num in numbers:
        if num in (1, 4, 7):
            answer += 'L'
            l[0] = int(num / 3)
        elif num in (3, 6, 9):
            answer += 'R'
            r[0] = int(num / 3 - 1)
        else:
        	# 2,5,8,0
            y, x = middleNum[num]
            Rdist = abs(r[0] - y) + abs(r[1] - x)
            Ldist = abs(l[0] - y) + abs(l[1] - x)
            if Rdist < Ldist:
                answer += 'R'
                r = [y, x]
            elif Rdist > Ldist:
                answer += 'L'
                l = [y, x]
            # 거리가 같다면
            else:
                if hand == "right":
                    answer += 'R'
                    r = [y, x]
                else:
                    answer += 'L'
                    l = [y, x]

    return answer
solution([7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2], "left")

역시나 1번문제였어서 그런지 무난하게 넘어갈 수 있는 문제였다

'컴퓨터 > 코테' 카테고리의 다른 글

카카오 기출 - 표편집  (0) 2021.08.27
백준 2156 - 포도주 [dp]  (0) 2021.08.26
카카오 2021 기출 - 광고삽입  (0) 2021.08.23
카카오 2021 기출 - 합승 택시요금 [워셜 플로이드]  (0) 2021.08.23
백준 11559 [bfs]  (0) 2021.08.18