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
'알고리즘 문제 > Leetcode' 카테고리의 다른 글
[leetcode][1004] Max Consecutive Ones III (0) | 2019.03.04 |
---|---|
[leetcode][997] Find the Town Judge (0) | 2019.03.02 |
[leetcode][993] Cousins in Binary Tree (0) | 2019.02.17 |
[leetcode][984] String Without AAA or BBB (0) | 2019.02.14 |
[leetcode][992] Subarrays with K Different Integers (0) | 2019.02.14 |
댓글