문제 링크 : 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 출력, 없으면 날짜 출력


+ Recent posts