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