-
67256. [카카오 인턴] 키패드 누르기(Python, Programmers Level 1)Programmers 2022. 9. 4. 01:30
문제 설명
키패드의 각 숫자를 규칙에 따라 누릅니다.
좌측 열은 왼손으로, 우측 열은 오른손으로 누르며,
가운데 열은 가까운 손가락으로 누르되, 좌우 손가락과의 거리가 동일하면 왼손잡이는 왼손 오른손잡이는 오른손으로 누릅니다.
주어진 숫자를 규칙에 따라 누르는 데 사용된 손가락 순서를 반환합니다.
코드
코드를 간단하게 만들기 위해, *을 10, #을 12로 두고 진행합니다.
또한 이 위치는 왼손과 오른손의 시작 위치가 됩니다.
left = 10 right = 12
눌러야 하는 숫자를 순서대로 가져옵니다.(for 사용)
for num in numbers:
코드를 간단하게 만들기 위해 0또한 11로 두고 진행합니다.
if num == 0: num = 11
왼쪽 열은 3으로 나눴을 때, 나머지가 1인 숫자가 위치합니다.
오른쪽 열은 3으로 나눴을 때, 나머지가 0인 숫자가 위치합니다.
해당 열은 눌러야 하는 손가락이 정해져있습니다.
if num % 3 == 1: answer += 'L' left = num elif num % 3 == 0: answer += 'R' right = num
가운데 열에 위치한 숫자의 차례에는 각 손가락으로부터의 거리가 필요합니다.
else: left_length = abs((num - left) // 3) if left % 3 == 1: left_length += 1 right_length = abs((num + 1 - right) // 3) if right % 3 == 0: right_length += 1
왼쪽 손가락으로부터의 거리가 짧거나,
거리가 동일하면서 왼손잡이인 경우, 왼손으로 누르며,
그렇지 않다면 오른손으로 누릅니다.
if left_length < right_length or \ left_length == right_length and hand == 'left': answer += 'L' left = num else: answer += 'R' right = num
더보기def solution(numbers, hand): answer = '' left = 10 right = 12 for num in numbers: if num == 0: num = 11 if num % 3 == 1: answer += 'L' left = num elif num % 3 == 0: answer += 'R' right = num else: left_length = abs((num - left) // 3) if left % 3 == 1: left_length += 1 right_length = abs((num + 1 - right) // 3) if right % 3 == 0: right_length += 1 if left_length < right_length or \ left_length == right_length and hand == 'left': answer += 'L' left = num else: answer += 'R' right = num return answer if __name__ == '__main__': result = solution([1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5], "right") print("LRLLLRLLRRL" == result, result) result = solution([7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2], "left") print("LRLLRRLLLRR" == result, result) result = solution([1, 2, 3, 4, 5, 6, 7, 8, 9, 0], "right") print("LLRLLRLLRL" == result, result)
'Programmers' 카테고리의 다른 글
86051. 없는 숫자 더하기(Python, Programmers Level 1) (0) 2022.09.04 64061. 크레인 인형뽑기 게임(Python, Programmers Level 1) (0) 2022.09.04 81301. 숫자 문자열과 영단어(Python, Programmers Level 1) (0) 2022.09.04 72410. 신규 아이디 추천(Python, Programmers Level 1) (0) 2022.09.04 77484. 로또의 최고 순위와 최저 순위(Python, Programmers Level 1) (0) 2022.09.04