def get_dist(a, b, phone):
a_x, a_y, b_x, b_y = 0, 0, 0, 0
for i, p in enumerate(phone):
if p.count(a):
a_x = i
a_y = p.index(a)
if p.count(b):
b_x = i
b_y = p.index(b)
if a_x and a_y and b_x and b_y:
break
return abs(a_x - b_x) + abs(a_y - b_y) # 문제에서 암시한 좌표간의 거리 도출 식
def solution(numbers, hand):
answer = ''
phone = [
[1,2,3],
[4,5,6],
[7,8,9],
[10,0,12],
]
left = 10
right = 12
for i in range(len(numbers)):
if numbers[i] in (1,4,7): # 1,4,7은 왼손
answer += 'L'
left = numbers[i]
elif numbers[i] in (3,6,9): # 3,6,9는 오른손
answer += 'R'
right = numbers[i]
else:
r_dist = get_dist(left, numbers[i], phone) # 오른손에서 누를 번호간의 거리
l_dist = get_dist(right, numbers[i], phone) # 왼손에서 누를 번호간의 거리
if r_dist > l_dist:
answer += 'R'
right = numbers[i]
elif r_dist < l_dist:
answer += 'L'
left = numbers[i]
else:
if hand == 'right':
answer += 'R'
right = numbers[i]
else:
answer += 'L'
left = numbers[i]
return answer