문제 링크 : https://www.acmicpc.net/problem/7576
제 생각하는 가장 기본적인 BFS 문제입니다.
만약 누군가 BFS 개념을 이제 막 배워서 문제를 추천해달라고 한다면 이 문제를 추천할 겁니다.
<접근>
하루에 상, 하, 좌, 우 한 칸씩 이동하니 BFS가 바로 떠오릅니다.
저는 좌표 관련된 BFS 문제에서는 좌표에 대한 Class를 만들어서 사용합니다.
아래 그림처럼 배열의 숫자를 하나씩 증가시키는 방법도 있지만
저는 클래스에 변수를 하나 더 추가하여 카운트 하는 방법로 풀었습니다.
일반적으로 BFS 문제에서는 visited 2차원 배열을 사용하여 중복 방문을 방지하지만 이 문제에서는 1 이 그 역할을 하고 있습니다.
<순서>
1. 2중 for문으로 box 배열을 돌면서 익은 토마토를 Queue 자료구조에 넣기
2. bfs를 돌면서 토마토 모두 익게 하기
3. 다시 2중 for문 돌면서 안 익은 토마토가 있다면 -1 출력, 없으면 날짜 출력
'알고리즘 문제 > 백준' 카테고리의 다른 글
백준 2309번. 일곱 난쟁이 (Java) (0) | 2018.12.27 |
---|---|
백준 10974번. 모든 순열 (Java) (0) | 2018.12.27 |
백준 2573번. 빙산 (Java) (2) | 2018.12.22 |
백준 1436번. 영화감독 숌 (Java) (0) | 2018.12.18 |
백준 1181번. 단어 정렬 (Java) (0) | 2018.12.18 |