백준/Search
[백준/bfs] 14502번: 연구실(다시->해결)
ydin
2022. 2. 16. 12:44
-문제: 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
