카카오인턴 키패드누르기
접근 방법
- 딕셔너리로 각 키패드의 위치를 활용함
- 1,4,7(왼)의경우와 3,6,9(오)의 경우의 3으로 나눴을때의 패턴 활용
- 위의 경우가 아니라면, abs 절대값을 활용하여 거리 계산 후 거리가 짧은 쪽 손이 위치
만약 거리가 같다면 왼손잡이, 오른손 잡이에 따라 나뉘어지게됨
>> 처음에 hand 매개변수가 L,R로 들어오는줄 알았는데 left, right로 들어오니 주의!
내 풀이
def solution(numbers, hand):
answer = ''
dict={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 = (3, 0)
right = (3, 2)
for i in numbers:
if i%3==1:
answer+='L'
left = dict[i]
elif i%3==0 and i!=0:
answer+='R'
right = dict[i]
else:
cur= dict[i]
left_dis = abs(cur[0]-left[0])+abs(cur[1]-left[1])
right_dis = abs(cur[0]-right[0])+abs(cur[1]-right[1])
if left_dis < right_dis:
answer+='L'
left = dict[i]
elif left_dis > right_dis:
answer += 'R'
right = dict[i]
else:
if hand=='left':
answer += 'L'
left = dict[i]
else:
answer += 'R'
right = dict[i]
return answer