본문 바로가기
Algorithm/Beakjoon

[백준 알고리즘] 구현 - 16236번: 아기상어 (Java)

by dvid 2021. 11. 3.

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

방금 푼 감시와 비슷했지만 더 어려웠던 것 같다.

내가 푼 프로세스는

  1. Fish 클래스를 만들어 위치와 거리를 저장한다.
  2. bfs를 통해 현재 먹을 수 있는 물고기를 구한다.
  3. eat() 함수에서는 현재 먹을 수 있는 물고기들 중 가장 우선순위가 높은 물고기를 한 마리만 먹는다.
  4. 먹을 수 있는 물고기를 다 먹을 때 까지 무한반복.

주의사항
현재 상어의 위치를 확인했을 때, 물고기를 먹었을 때에는 해당 위치를 0으로 변경
물고기를 현재의 사이즈 만큼 먹어야 크기 1 증가. <- 이 부분을 잘못봐서 해멨다.

먹이의 우선순위를 구할 때 리스트를 정렬해서 list.get(0)을 적용해보았지만 우선순위 큐를 이용한 것이 빨랐다.
우선순위 큐는 O(logN)이다. 객체를 정렬할 때는 O(NlogN)의 시간이 소요된다고 한다.

댓글