-문제: https://www.acmicpc.net/problem/14502
14502번: 연구소
인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크
www.acmicpc.net
어려웠던 문제.
아이디어는 생각났는데, 그걸 코드로 옮기는 걸 몰랐다.
아이디어는
1. 조건에 맞추어 벽을 세개 세우기
2. 2주변 다 2로 바꾸기
3. 0의 갯수 출력
2,3은 bfs이용하면 될 것 같은데 1번을 어떻게 해야할지 잘 몰랐다.
select_wall을 참고하면 된다
-정답풀이:
기본 정보 받는 코드. 여기까지는 오케이
copy.deepcopy()는 깊은 복사로, 내부의 객체들까지 모두 새롭게 copy되는 것이다.
nm에 변화가 생겨도 sel_nm은 복사한 상태 그대로 유지된다
벽을 3개 모두 세웠을 때와 그 전인 경우로 나뉜다.
먼저 벽을 3개 모두 세웠을 때를 보면
깊은 복사한 것을 기준으로 바이러스를 전파시키고, 전파가 끝나면
전체 0의 갯수를 센다
벽이 3개 미만으로 세워졌을 때는 else문을 참고하면 되는데
이 다음이 이해가 가지 않는다
여기도 오케이. bfs
'백준 > Search' 카테고리의 다른 글
[백준/bfs] 7569번: 토마토 (0) | 2022.02.17 |
---|---|
[백준/bfs,dfs] 4963번: 섬의 개수(발전한 부분) (0) | 2022.02.17 |
[백준/bfs] 11724번: 연결요소의 개수 (0) | 2022.02.16 |
[백준/dfs] 2606번: 바이러스 (0) | 2022.02.15 |
[백준/dfs] 2667번: 단지번호 붙이기 (0) | 2022.02.14 |