문제 풀이
[python] 키패드 누르기
_tera_
2021. 9. 2. 01:15
코드
def solution(numbers, hand):
dic = {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]}
res = ''
l_now = dic['*']
r_now = dic['#']
l = [1, 4, 7]
r = [3, 6, 9]
mid = [2, 5, 8, 0]
for i in numbers:
if i in l:
res += 'L'
l_now = dic[i]
elif i in r:
res += 'R'
r_now = dic[i]
elif i in mid:
l_d=0
r_d=0
for a,b,c in zip(l_now, r_now, dic[i]):
l_d += abs(a-c)
r_d += abs(b-c)
if l_d < r_d:
res += 'L'
l_now = dic[i]
elif l_d > r_d:
res += 'R'
r_now = dic[i]
else:
if hand == 'left':
res += 'L'
l_now = dic[i]
else:
res += 'R'
r_now = dic[i]
return res
좌표로 만들어서 풀어보고 싶어서 if문 부분을 다 정리하고 나서 좌표를 넣고 출력하는데 계속 오답이어서 결국 다른 풀이를 찾아봄
l_d += abs(a-c)
r_d += abs(b-c)
디버깅해보니 이 부분에서 +=가 아닌 =로 풀었더니 거리가 0 아니면 1로 나와서 계속 손 따라 RL이 저장돼서였다