https://www.acmicpc.net/problem/16236
방금 푼 감시와 비슷했지만 더 어려웠던 것 같다.
내가 푼 프로세스는
- Fish 클래스를 만들어 위치와 거리를 저장한다.
- bfs를 통해 현재 먹을 수 있는 물고기를 구한다.
eat()
함수에서는 현재 먹을 수 있는 물고기들 중 가장 우선순위가 높은 물고기를 한 마리만 먹는다.- 먹을 수 있는 물고기를 다 먹을 때 까지 무한반복.
주의사항
현재 상어의 위치를 확인했을 때, 물고기를 먹었을 때에는 해당 위치를 0으로 변경
물고기를 현재의 사이즈 만큼 먹어야 크기 1 증가. <- 이 부분을 잘못봐서 해멨다.
먹이의 우선순위를 구할 때 리스트를 정렬해서 list.get(0)
을 적용해보았지만 우선순위 큐를 이용한 것이 빨랐다.
우선순위 큐는 O(logN)
이다. 객체를 정렬할 때는 O(NlogN)
의 시간이 소요된다고 한다.
'Algorithm > Beakjoon' 카테고리의 다른 글
[백준] 구현 - 14503: 로봇 청소기 (Java) (0) | 2021.11.06 |
---|---|
[백준] 구현 - 15683: 감시 (Java) (0) | 2021.11.03 |
[백준] 동적 계획법 - 2011번: 암호코드 (Java) (0) | 2021.07.25 |
[백준] 동적 계획법 - 11054: 가장 긴 바이토닉 부분 수열 (Java) (0) | 2021.07.19 |
[백준] 동적 계획법 - 11053: 가장 긴 증가하는 부분 수열 (Java) (0) | 2021.07.19 |
댓글