전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력할 때, 1/4/7은 왼손, 3/6/9는 오른손으로 입력하되 2/5/8/0은 키패드 위치에서 현재 위치가 더 가까운 손을 사용하도록하여, 입력된 수열을 "L" 또는 "R"로 변환하는 함수 작성
kp = {
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],
"*": [3, 0], 0: [3, 1], "#": [3, 2]
}
def dist(point1, point2):
y1, x1 = point1
y2, x2 = point2
return abs(y2-y1) + abs(x2-x1)
def solution(numbers, hand):
result = ''
lh_pos = kp["*"]
rh_pos = kp["#"]
for num in numbers:
if num in [1, 4, 7]:
lh_pos = kp[num]
result += 'L'
elif num in [3, 6, 9]:
rh_pos = kp[num]
result += 'R'
else:
if dist(rh_pos, kp[num]) < dist(lh_pos, kp[num]):
rh_pos = kp[num]
result += "R"
elif dist(rh_pos, kp[num]) > dist(lh_pos, kp[num]):
lh_pos = kp[num]
result += 'L'
else:
if hand == "right":
rh_pos = kp[num]
result += "R"
else:
lh_pos = kp[num]
result += 'L'
return result
dict()
타입 변수 kp
에 저장, 거리를 확인할 수 있도록 두 위치를 받아서 수직수평 이동거리를 측정하는 함수 dist(좌표1, 좌표2)
작성result
반환