본문 바로가기
알고리즘/알고리즘 오답노트

백준 16236 아기상어

by shinyou1024 2019. 4. 11.

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

댓글