맵 자료형을 통해 키패드의 번호마다 좌표값을 넣어 주었습니다.
전달받은 hand가 left인지 right인지 확인한 다음 handtype을 정해주었습니다.
입력받은 넘버들을 키로 사용해서 키패드의 좌표값을 얻어줬습니다. 좌표값에서 x가 0이면 맨 왼쪽이므로 왼손 2면 오른손을 사용해야 하므로 if elif로 해주었습니다 그 다음 해당 좌표값을 왼손위치와 오른손 위치에 넣어주었습니다. 만약 x가 1이라면 왼손의 위치와 오른손의 위치 거리를 비교해 준 다음 가까운 손 만약 같다면 맨 처음 입력받은 손을 이용해서 문자열을 늘려주었습니다.
def solution(numbers, hand):
keypad={(i+1)%11:(i%3,i//3) for i in range(11) if i!=9}
lefthand=0,3
righthand=2,3
ans=''
handtype='R' if hand=='right' else 'L'
for i in numbers:
nowlocate=keypad[i]
l_dist=abs(nowlocate[0]-lefthand[0])+abs(nowlocate[1]-lefthand[1])
r_dist=abs(nowlocate[0]-righthand[0])+abs(nowlocate[1]-righthand[1])
if nowlocate[0]==0:
ans+='L'
lefthand=nowlocate
elif nowlocate[0]==2:
ans+='R'
righthand=nowlocate
else:
if l_dist<r_dist:
ans+='L'
lefthand=nowlocate
elif l_dist>r_dist:
ans+='R'
righthand=nowlocate
else:
if handtype=='R':
righthand=nowlocate
else:
lefthand=nowlocate
ans+=handtype
return ans
'Koala - 4기' 카테고리의 다른 글
[프로그래머스] 합승 택시 요금 (1) | 2021.08.12 |
---|---|
프로그래머스 : 키패드 누르기 (0) | 2021.08.12 |
[프로그래머스] 키패드 누르기 문제 (5) | 2021.08.12 |
[프로그래머스] 자물쇠와 열쇠 (0) | 2021.08.11 |
[프로그래머스] 보석 쇼핑 (1) | 2021.08.11 |