https://school.programmers.co.kr/learn/courses/30/lessons/67256
문제는 위 링크에서 봐주세요!
1, 4, 7은 왼손이, 3, 6, 9는 오른손이 누르지만, 2, 5, 8, 0은 더 가까운 손이 누르기 때문에 경로를 계산하는 것이 중요합니다. 점과 점 사이의 직선 경로가 아니고 상하좌우 1칸 이동의 제한이 있는 상태에서 경로를 계산해야 해서 그 규칙을 파악하는데만 1시간 30분 정도가 걸렸습니다..ㅎ 그래도 규칙을 이해하고 나니 굉장히 재미있었습니당ㅎ
다음은 경로 계산 방법입니다.
| 현재 수 - 이동할 수 | // 3 + | 현재 수 - 이동할 수 | % 3
위 식을 통해 경로를 알아낼 수 있습니다.
다음 코드는 이를 이용해서 구현한 코드입니다.
def solution(numbers, hand):
answer = ''
left = 10
right = 12
for i in numbers:
if i == 1 or i == 4 or i == 7:
answer += "L"
left = i
elif i == 3 or i == 6 or i == 9:
answer += "R"
right = i
else:
if i == 0:
i = 11
left_length = abs(i-left)//3 + abs(i-left)%3
right_length = abs(i-right)//3 + abs(i-right)%3
if (left_length < right_length):
answer += "L"
left = i
elif (left_length > right_length):
answer += "R"
right = i
else:
if (hand == "left"):
answer += "L"
left = i
else:
answer += "R"
right = i
return answer
시간이 넉넉한 상태에서 규칙을 찾아내는 과정이 재밌었는데, 만약 코테 현장에서 이런 구현 문제를 만나면 당황해서 제대로 못 찾아낼 거 같다. 지금부터 많이 풀어서 빨리 풀어내는 법을 배워야겠다! 아자뵤!
'코딩 테스트 일지 📒' 카테고리의 다른 글
[정렬] 두 배열의 원소 교체 + 입력받은 개수만큼 1차원 배열로, 리스트 원소값 서로 바꾸기, 리스트 원소의 합 (1) | 2024.03.19 |
---|---|
[DFS & BFS] 프로그래머스_게임 맵 최단거리 & 나동빈_미로탈출 (1) | 2024.03.13 |
[DFS & BFS] 음료수 얼려먹기 + 2차원 리스트 생성 및 입력 방법 (0) | 2024.03.11 |
[그리디] 모험가 길드 + input(), sort(), sorted() (1) | 2024.03.07 |
[그리디] 곱하기 혹은 더하기 + str(), int() (0) | 2024.03.07 |