[Prgms_Kakao] 키패드 누르기
2020 카카오 인턴십
키패드 누르기
🔗 전체 문제 : 키패드 누르기
- 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다.
- 왼쪽 열의 3개의 숫자
1, 4, 7
을 입력할 때는 왼손 엄지손가락을 사용합니다.- 오른쪽 열의 3개의 숫자
3, 6, 9
를 입력할 때는 오른손 엄지손가락을 사용합니다.- 가운데 열의 4개의 숫자
2, 5, 8, 0
을 입력할 때는 두 엄지손가락의 현재 키패드의 위치에서 더 가까운 엄지손가락을 사용합니다.
4-1. 만약 두 엄지손가락의 거리가 같다면, 오른손잡이는 오른손 엄지손가락, 왼손잡이는 왼손 엄지손가락을 사용합니다.
🔈 풀이
def solution(numbers, hand):
result = ''
key = {1 : (0,0), 2: (1,0), 3:(2,0),
4:(0,1), 5:(1,1), 6:(2,1),
7:(0,2), 8:(1,2), 9:(2,2),
'*':(0,3),0:(1,3),'#':(2,3)}
left = '*'
right = '#'
for i in numbers:
if i in (1, 4, 7):
result += 'L'
left = i
elif i in (3, 6, 9):
result += 'R'
right = i
else:
l_i = sum(list(map(lambda x: abs(x[0]-x[1]), list(zip(key[i], key[left])))))
r_i = sum(list(map(lambda x: abs(x[0]-x[1]), list(zip(key[i], key[right])))))
if l_i < r_i or (l_i == r_i and hand == 'left'):
result += 'L'
left = i
elif l_i > r_i or (l_i == r_i and hand == 'right'):
result += 'R'
right = i
return result
# test
print(solution([1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5], "right")) #"LRLLLRLLRRL"
print(solution([1, 2, 3, 4, 5, 6, 7, 8, 9, 0], "right")) #"LLRLLRLLRL"
Author And Source
이 문제에 관하여([Prgms_Kakao] 키패드 누르기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@greenwint3r/PrgmsKakao-키패드-누르기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)