

number : 키패드에서 누를 번호hand : 오른손잡이면 right, 왼손잡이면 left| numbers | hand |
|---|---|
| [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] | "right" |
| [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] | "left" |
| [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] | "right" |
키패드를 어느손 엄지로 눌렀는지 L 혹은 R로 반환하면 된다.
| result |
|---|
| "LRLLLRLLRRL" |
| "LRLLRRLLLRR" |
| "LLRLLRLLRL" |
단순 python 입문에 좋은 문제라 풀어보았다!
lhand와 rhand에 [열, 행]으로 위치를 기록해주었다.|x1 - x2| + |y1 - y2|로 구해줬다.def solution(numbers, hand):
answer = ''
# keypad = [[1, 2, 3], [4, 5, 6], [7, 8, 9], ['*', 0, '#']]
lhand = [3, 0]
rhand = [3, 2]
for num in numbers:
if num == 1 or num == 4 or num == 7:
answer += "L"
lhand = [num//3, 0]
elif num == 3 or num == 6 or num == 9:
answer += "R"
rhand = [num//3 - 1, 2]
else:
temp = num//3
if num == 0: temp = 3
# 거리 계산
ldist = abs(temp - lhand[0]) + abs(lhand[1] - 1)
rdist = abs(temp - rhand[0]) + abs(rhand[1] - 1)
if ldist > rdist or (ldist == rdist and hand == "right"):
answer += "R"
rhand = [temp, 1]
elif ldist < rdist or (ldist == rdist and hand == "left"):
answer += "L"
lhand = [temp, 1]
return answer