Week9 서영탁 SWEA 1949 등산로조성 풀이 #150
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
풀이
등산로는 가장 높은 봉우리에서 시작하여 등산로의 높이가 이전 위치보다 낮은 곳으로만 내려갈 수 있습니다.
하자만, 내려가는 길에 딱 한 곳을 정해서 최대 K 깊이만큼 지형을 깍을 수 있는데, 이러한 규칙을 따르면서 등산로의 최장 거리를 찾는 문제입니다.
우선 입력을 받으면서 가장 높은 봉우리의 높이를 구했고, 그 봉우리에서부터 dfs로 내려갈 수 있는 등산로의 길이를 구했습니다.
dfs에서 4방 탐색을 통해 아직 방문하지 않은 위치에 대해 산을 깍지 않고 갈 수 있는 위치는 그냥 이동해주었습니다.
산을 깍아야지만 이동할 수 있는 위치에 대해서 처리가 중요한데,
이 위치까지 오기 전에 이미 깍아서
rest가 0이라면 더 이상 이동할 수 없습니다.아직 깍을 수 있다면, 다음 위치의 높이에서 K만큼 깍아보고 이 높이가 현재 위치보다 낮아 갈 수 있게 된다면 이동하게 했습니다.
그런데 여기서 K만큼 전부 깍을 필요없이, 현재 위치보다 1만 작게 깍아야 이 후의 다른 위치로 이동할 수 있을 확률이 높아지니 1만 작게 깍았습니다.
리뷰 요청 사항
궁금한 점이나 더 좋은 방법이 있다면 리뷰 남겨주세요.
느낀점
벽 부수고 이동하기나, 말이 되고픈 원숭이와 비슷한 문제라고 생각했는데, 이 문제는 최장 거리를 구해야 한다는 것이 달랐습니다.