본문 바로가기
알고리즘 문제/Leetcode

[leetcode][994] Rotting Oranges

by 햄과함께 2019. 2. 17.
320x100

문제 : https://leetcode.com/problems/rotting-oranges/




BFS로 풀었다.

백준의 토마토와 비슷한 문제.


큐에 x, y, minutes를 저장한다.

배열을 한 번씩 탐색하면서 썩은 오렌지인 경우 큐에 (x, y ,0)을 저장한다.

그리고 오렌지(fresh + rotten)의 개수를 저장한다.


배열 탐색이 끝나면 큐가 빌때까지 오렌지 썩음을 전염시킨다.

큐에서 요소를 빼낼 때 rotten 오렌지의 개수를 구한다.

큐의 앞의 요소부터 탐색하면서 상하좌우 배열을 탐색한다. 만약 탐색한 grid 값이 fresh한 오렌지라면 큐에 넣는다. 이 때 minutes는 +1 해준다.

큐에서 마지막으로 꺼낸 요소의 minutes가 정답이 된다.

만약 총 오렌지 개수와 rotten 오렌지 개수가 같지 않다면 -1을 반환한다.




소스코드 : https://gist.github.com/fpdjsns/0975c9bfeabe9d6d3b1c18a85a8d73a3

320x100

댓글