티스토리 뷰
728x90
반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/67256?language=python3
코드
def solution(numbers, hand):
answer = ''
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]}
left_s = dic['*']
right_s = dic['#']
for i in numbers:
now = dic[i]
if i in [1, 4, 7]:
answer += 'L'
left_s = now
elif i in [3, 6, 9]:
answer += 'R'
right_s = now
else:
left_d = 0
right_d = 0
for a, b, c in zip(left_s, right_s, now):
left_d += abs(a-c)
right_d += abs(b-c)
if left_d < right_d:
answer += 'L'
left_s = now
elif left_d > right_d:
answer += 'R'
right_s = now
else:
if hand == 'left':
answer += 'L'
left_s = now
else:
answer += 'R'
right_s = now
return answer
번호가 1,4,7인 경우에는 왼쪽으로 3,6,9인 경우에는 오른쪽으로 누른다.
2,5,8,0일 경우에는 가까운 손가락으로 누르면 되는데
거리를 구해야 하기 때문에 딕셔너리로 좌표값도 같이 선언해준다.
거리를 구할 때 x,y 좌표를 각각 빼준다음에 절댓값을 씌워주면 된다.
만약 왼쪽 오른쪽 거리가 같을 경우에는 hand에 들어온 값으로 결정해주면 된다.
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Level1, 1차 비밀지도 (Python) (0) | 2021.06.18 |
---|---|
[프로그래머스] Level1, 실패율 (Python) (0) | 2021.06.17 |
[프로그래머스] Level2, 3차 압축 (Python) (0) | 2021.06.16 |
[프로그래머스] Level2, 3차 파일명 정렬 (Python) (0) | 2021.06.16 |
[프로그래머스] Level2, 캐시 (Python) (0) | 2021.06.14 |
댓글