BOJ_7576_토마토
2021. 7. 31. 23:45ㆍ백준 알고리즘(BOJ)
1.
구분: DFS, BFS
언어: Python
전략:
- BFS를 통해 전체 그래프를 모두 탐색
- 큐에 토마토의 좌표와 며칠인지를 append한다. -> (x,y,day)
- 큐에서 popleft()하여 나온 칸과 인접한(상, 하, 좌, 우) 칸이 안익은 토마토이고, 칸의 범위를 벗어나지 않았다면, 날짜를 +1하여 큐에 넣는다 -> (x,y,day++) ** 단! 동시 다발적으로 토마토가 익기 때문에 day의 초기화가 필요하다
- 큐가 빌때까지 위의 과정을 반복한다.
- 전체를 돌면서 만약 안 익은 토마토가 존재하는지 확인한다.
복잡도:
시간- 1000*1000 = 10^6 -N과 M이 최대 1000이기 때문에
공간 - 최대 10^6 만큼 입력을 받으니 그것을 받을 크기의 큐
2.코드
3.
- 2차원 배열의 x, y가 너무 혼란을 주었다. 계속 array범위를 벗어났다는 오류를 받았다. 확실한 나만의 기준을 정해야 겠다.
- day도 함께 큐에 append하는 방법은 아빠가 아이디어를 준 것이다. 그 전에는 큐를 여러 개 사용하는 생각을 했는데, 결국 마지막에 day를 구할 때, 곤란했었다.
- DFS로도 한번 풀어봐야겠다.
'백준 알고리즘(BOJ)' 카테고리의 다른 글
BOJ_2493_탑 (0) | 2021.08.06 |
---|---|
BOJ_17478_재귀함수가 뭔가요? (0) | 2021.08.04 |
BOJ_15649_N과 M(1) (0) | 2021.07.19 |
BOJ_1920_수 찾기 (0) | 2021.07.17 |
BOJ_1931_회의실 배정 (0) | 2021.07.13 |