문제 출처
www.acmicpc.net/problem/16236
16236번: 아기 상어
N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가
www.acmicpc.net
1. 풀이 접근
ㆍ 현재 먹이를 먹을 수 있는지 확인 ( 먹이 못 먹을 경우 종료 후 시간 출력 )
ㆍ 현재 위치로 부터 가장 가까운 먹이 찾기 (BFS 탐색)
- 나보다 큰 먹이는 지나가지 못함 ( 벽 같은 역할 )
- 나의 크기와 같거나 작으면 지나 갈 수 있음
※ 물고기를 현재 크기 만큼 먹어야 크기 성장함. Ex. 상어 크기 3 -> 3번먹어야 4로 진화
ㆍ 가장 가까운 곳에 먹을 수 있으면 먹고나서 이동한 칸 수 만큼 시간 증가
- 먹이 위치로 이동 후 남은 먹이 리스트에서 먹은 먹이 삭제
2. 소스코드
github.com/Choi-JinYeong/Solve_Alg/tree/master/Solve_Algs/src/Git_BJ_16236
Choi-JinYeong/Solve_Alg
알고리즘 풀이. Contribute to Choi-JinYeong/Solve_Alg development by creating an account on GitHub.
github.com
3. 맺음말
ㆍ 체감난이도 : 보통
ㆍ 문제를 이해만 잘하면 풀이과정은 BFS로 쉽게 할 수 있음. BFS구현할 때 방문한 위치 초기화 하는 과정에서 시간을 많이 잡아먹음. 원래 기본 풀이 1시간, BFS 문제 찾는데 40분 소요. 실수 줄이기.
ㆍ 더욱 좋은 풀이방법이나 보완할 수 있는 부분, 또는 문제가 될 수 있는 부분들은 알려주시면 감사하겠습니다.
'IT > 알고리즘 풀이' 카테고리의 다른 글
[백준] [자바] 3190번 : 뱀 (0) | 2021.04.01 |
---|---|
[백준] [자바] 17144번 : 미세먼지 안녕! (0) | 2021.03.29 |
[백준] [자바] 10250번 : ACM 호텔 (0) | 2021.03.26 |
[백준] [자바] 16234번 : 인구 이동 (0) | 2021.03.25 |
[백준] [자바] 14503번 : 로봇 청소기 (0) | 2021.03.24 |
댓글