Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Feb 21, 2025

🧷 문제 링크

https://www.acmicpc.net/problem/2424

🧭 풀이 시간

20분

👀 체감 난이도

✏️ 문제 설명

  • $N \times M$ 크기의 보물 지도가 있고, 각 칸은 바다 혹은 섬이다.
  • 초기에 바다에는 수아와 해적, 보물이 하나씩 존재하고, 수아는 해적을 피해 보물에 도달하는게 목표다.
  • 매 턴마다, 수아가 먼저 상하좌우 중 한 곳으로 이동하고, 해적은 멈춰있거나 상하좌우 중 한 곳으로 이동한다.
  • 매 턴 후에, 만약 수아와 해적이 일직선상에 있고 그 사이에 바다만 있다면, 수아는 죽는다.
  • 해적이 어떻게 움직이더라도, 수아가 죽지 않고 보물을 얻을 수 있는지 판별해보자.

🔍 풀이 방법

[사용한 알고리즘]

  • 너비 우선 탐색

  • 수아가 이동하려는 칸에, 일직선상에 해적이 존재할 수 있다면, 그 칸으로 이동하면 안 된다.
  • 각 칸 별로, 그 칸에서 일직선상에 해적이 존재할 수 있는 최소 시간을 구하면, 해적은 멈춰있을 수 있기 때문에 그 시간 이후로 항상 통제당한다고 봐도 된다.
  • 해적을 기준으로 BFS를 돌리며 각 칸별로 일직선상의 최소 시간을 구해준 뒤, 수아로 BFS를 돌려서 보물로 갈 수 있는지 판별한다.

⏳ 회고

  • 처음에 일직선상에 섬이 있는 경우를 판별하지 않아서 답이 잘못 나왔었다.
  • 구현 똑바로 하기

@oncsr oncsr added the success 👍 해설을 보지 않고 풀었을 때 label Feb 21, 2025
@ShinHeeEul ShinHeeEul merged commit d8e4733 into main Feb 21, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

success 👍 해설을 보지 않고 풀었을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants