728x90
반응형
문제출처: https://school.programmers.co.kr/learn/courses/30/lessons/67256
풀이:
def solution(numbers, hand):
answer =''
pad = {'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)
}
left = pad['*'] #처음 왼손
right = pad['#'] #처음 오른손
print(pad['2'][1]) # 손위치 뽑아봄
for i in numbers:
now = pad[str(i)] # 숫자의 키패드 위치
# 1, 4, 7을 누르는 경우
if i in [1, 4, 7]:
answer += 'L'
left = now
# 3, 6, 9를 누르는 경우
elif i in [3, 6, 9]:
answer += 'R'
right = now
# 2, 4, 6, 8 을 누르는경우
else:
# x 좌표 + y 좌표 길이
left_dt = abs(pad[str(i)][0] - left[0] ) + abs(pad[str(i)][1] - left[1])
# 왼손 길이
right_dt =abs(pad[str(i)][0] - right[0] ) + abs(pad[str(i)][1] - right[1])
# 오른손 깅리
if left_dt < right_dt : # 왼손이 가까움
answer += 'L'
left = pad[str(i)]
elif left_dt > right_dt : # 오른손이 가까움
answer += 'R'
right = pad[str(i)]
else :
if hand == 'right' : # 길이가 같은데 오른손잡이
answer += 'R'
right = pad[str(i)]
else : # 왼손 잡이
answer += 'L'
left = pad[str(i)]
return answer
반응형
댓글