[JAVA 백준 16236] - 아기상어

삼성 기출 문제 풀기

 

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

 

16236번: 아기 상어

N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가지고 있고, 이 크기는 자연수이다. 가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다. 아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수 없고, 나머지 칸은 모두 지나갈 수 있다. 아기 상어는 자신의 크

www.acmicpc.net

 

아기상어는 BFS+시뮬레이션으로 보고 풀었다.

조건에 따라 상어가 먹을 수 있는  물고기를 찾으면서, BFS를 돌리면서 먹을 수 있는 물고기를 찾고 Comparable 로 조건에 맞는 우선순위를 주어서 타겟 물고기를 찾아서 먹고 그 위치에 상어를 기록한다. 이 때에 상어의 크기가 증가하는 지 확인해준다. 

 

그렇게 계속 돌리면서 상어가 먹을 수 있는 물고기가 있는 지 계속 찾아나간다.

아직 코드 구현력에서 미숙한 부분이 많아서 난잡해서 보기 어렵다... 

 

조금 더 깔끔하게 코드를 구상해야 되겠다.