https://www.acmicpc.net/problem/16236
16236번: 아기 상어
N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가지고 있고, 이 크기는 자연수이다. 가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다. 아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수 없고, 나머지 칸은 모두 지나갈 수 있다. 아기 상어는 자신의 크
www.acmicpc.net
소스 코드
http://colorscripter.com/s/kwHP02Y
오답노트
1. 상어가 움직인 자리를 0으로 바꿔줘야 하는데 남겨놨음
2. 문제를 잘못 이해 :
사이즈업할 때마다 먹은 물고기 수를 초기화해줘야 함
(총 개수로 따져서 틀렸음)
3. BFS에서 방문체크는 큐에 넣을 때 해 줘야 함
=> 큐에서 뺄 때 체크하니까 메모리초과
4. 최적화하려고 물고기를 찾은 최소시간 변수를 만들었는데
얘 때문에 틀렸었음
풀이방식
bfs를 돌려서 잡은 물고기가 0이면 엄마호출
잡은 물고기가 1개일 때와 여러 개일 때를 나눠서 생각
bfs를 돌릴 때 물고기를 발견했다고 바로 먹는 게 아니라
후보로 생각하고 hunt에 넣어놨다가 bfs가 끝나고 따져서 그 중 조건에 맞는 것만 먹기
먹은 물고기 수 늘려주고, 그 수에 따라 사이즈 결정
'알고리즘 > 알고리즘 오답노트' 카테고리의 다른 글
백준 15686 치킨 배달 (0) | 2019.04.13 |
---|---|
백준 16235 나무 재테크 (0) | 2019.04.12 |
백준 14888 연산자 끼워넣기 (0) | 2019.03.28 |
백준 1890 점프 (0) | 2019.03.18 |
백준 13458 시험감독 (0) | 2019.03.14 |
댓글