✏️ 문제
문제 파악
0을 제외한 숫자 키패드를 배열에 넣어서 배열의 인덱스를 활용해서 풀었다.
cur 2차원 배열에 인덱스 0에는 왼손의 마지막 위치, 1에는 오른손의 마지막 위치를 넣어 움직였을 시 해당 숫자 키패드 위치를 대입하는 코드로 짰다.
코드
- 처음에 제출한 코드
def solution(numbers, hand):
answer = ''
cur = [[0, 3], [2, 3]]
for n in numbers:
if n == 1 or n == 4 or n == 7:
answer += 'L'
cur[0][0] = (n-1) % 3
cur[0][1] = (n-1) // 3
elif n == 3 or n == 6 or n == 9:
answer += 'R'
cur[1][0] = (n-1) % 3
cur[1][1] = (n-1) // 3
elif n == 2 or n == 5 or n == 8:
left_length = abs(cur[0][0] - ((n-1) % 3)) + abs(cur[0][1] - ((n-1) // 3))
right_length = abs(cur[1][0] - ((n-1) % 3)) + abs(cur[1][1] - ((n-1) // 3))
if left_length == right_length:
if hand == 'right':
answer += 'R'
cur[1] = [(n-1) % 3, (n-1) // 3]
else:
answer += 'L'
cur[0] = [(n-1) % 3, (n-1) // 3]
elif left_length < right_length:
answer += 'L'
cur[0] = [(n-1) % 3, (n-1) // 3]
else:
answer += 'R'
cur[1] = [(n-1) % 3, (n-1) // 3]
else: # n == 0
left_length = abs(cur[0][0] - 1) + abs(cur[0][1] - 3)
right_length = abs(cur[1][0] - 1) + abs(cur[1][1] - 3)
if left_length == right_length:
if hand == 'right':
answer += 'R'
cur[1] = [1, 3]
else:
answer += 'L'
cur[0] = [1, 3]
elif left_length < right_length:
answer += 'L'
cur[0] = [1, 3]
else:
answer += 'R'
cur[1] = [1, 3]
return answer
- 정리한 코드
def solution(numbers, hand):
answer = ''
cur = [[0, 3], [2, 3]]
hand = 'R' if hand == 'right' else 'L'
for n in numbers:
if n in [1, 4, 7]:
answer += 'L'
cur[0] = [(n - 1) % 3, (n - 1) // 3]
elif n in [3, 6, 9]:
answer += 'R'
cur[1] = [(n - 1) % 3, (n - 1) // 3]
else:
target = [(n - 1) % 3 if n != 0 else 1, (n - 1) // 3 if n != 0 else 3]
left_length = abs(cur[0][0] - target[0]) + abs(cur[0][1] - target[1])
right_length = abs(cur[1][0] - target[0]) + abs(cur[1][1] - target[1])
if left_length == right_length:
answer += hand
cur[0 if hand == 'L' else 1] = target
elif left_length < right_length:
answer += 'L'
cur[0] = target
else:
answer += 'R'
cur[1] = target
return answer
'PS > 프로그래머스' 카테고리의 다른 글
[Python] 햄버거 만들기 (0) | 2024.10.31 |
---|---|
[Python] 체육복 (0) | 2024.10.31 |
[Python] 로또의 최고 순위와 최저 순위 (0) | 2024.10.29 |
[Python] 문자열 나누기 (0) | 2024.10.29 |
[Python] 둘만의 암호 (0) | 2024.10.29 |