728x90
https://programmers.co.kr/learn/courses/30/lessons/67256
- 생각
- 키패드 간의 거리 구하는게 문제였다.. 처음에 3으로 나눈 나머지와 몫을 이용해서 풀었는데 그러면 코드가 눈에 잘 안들어와서 dictionary로 아예 만들어버림
- 자꾸 코드의 가독성이 떨어져서 답을 구하고도 다시 코드를 정리하게 된다... 고쳐야지
- 코드
def solution(numbers, hand):
answer = ''
# 각 자리
keypad = {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)}
# 현재 엄지의 위치 [왼손, 오른손]
hands = ['*', '#']
# 번호 누르기
for num in numbers:
if num in [1, 4, 7]:
answer += 'L'
hands[0] = num
elif num in [3, 6, 9]:
answer += 'R'
hands[1] = num
# 2580
else:
# 손가락과 누르고 싶은 키패드 거리 구하기
want = keypad[num]
l = keypad[hands[0]]
r = keypad[hands[1]]
l_dist = abs(want[0]-l[0]) + abs(want[1]-l[1])
r_dist = abs(want[0]-r[0]) + abs(want[1]-r[1])
if r_dist > l_dist:
answer += 'L'
hands[0] = num
elif r_dist < l_dist:
answer += 'R'
hands[1] = num
# 거리가 같으면 어느손잡이인지에 따라
else:
if hand == 'left':
answer += 'L'
hands[0] = num
else:
answer += 'R'
hands[1] = num
return answer
728x90
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[백준] 1697. 숨바꼭질 - Python (0) | 2022.06.03 |
---|---|
[프로그래머스] Lv.2 수식 최대화 - Python (0) | 2022.06.02 |
[백준] 2841. 외계인의 기타 연주 - Python (0) | 2022.06.01 |
[백준] 2644. 촌수계산 - Python (0) | 2022.06.01 |
[백준] 21608. 상어 초등학교 - Python (0) | 2022.05.31 |
댓글