문제
https://programmers.co.kr/learn/courses/30/lessons/67256



내가 푼 풀이
def distance(target, now):
keypad = [["1","2","3"],["4","5","6"],["7","8","9"],["*","0","#"]]
#현재 위치(now)와 목표 번호(target)를 좌표로 변환
for i in keypad:
if type(now) == tuple and type(target) == tuple:
break
if now in i:
now = (keypad.index(i), i.index(now))
if target in i:
target = (keypad.index(i), i.index(target))
if now[0] == target[0]: #같은 x축에 위치할 경우
return abs(now[1] - target[1])
elif now[1] == target[1]: #같은 y축에 위치할 경우
return abs(now[0] - target[0])
else: #대각선에 위치할 경우
return abs(now[0] - target[0]) + abs(now[1] - target[1])
def solution(numbers, hand):
answer = ''
hand_pos = {"L" : "*", "R" : "#"}
while numbers:
num = numbers.pop(0)
num = str(num)
if num in ["1", "4", "7"]:
answer += "L"
hand_pos["L"] = num
elif num in ["3", "6", "9"]:
answer += "R"
hand_pos["R"] = num
else:
l_dist = distance(num, hand_pos["L"])
r_dist = distance(num, hand_pos["R"])
if l_dist > r_dist:
answer += "R"
hand_pos["R"] = num
elif l_dist < r_dist:
answer += "L"
hand_pos["L"] = num
elif l_dist == r_dist:
if hand == "right":
answer += "R"
hand_pos["R"] = num
else:
answer += "L"
hand_pos["L"] = num
return answer