알고리즘 공부/백준 문제풀이

[백준 python] 14502번 연구소

이현찬 2022. 8. 2. 23:04
728x90

문제 링크

 

14502번: 연구소

인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크

www.acmicpc.net

문제 설명

  • 빈 공간, 벽, 바이러스로 구성된 2차원 array를 입력받아 빈 공간 세 곳에 벽을 세운 후 바이러스가 퍼질 수 없는 영역의 수를 세는 문제
  • 구현해야 하는 내용은 빈 공간에 $^{1)}$세 개의 벽을 세우는 것, $^{2)}$바이러스가 퍼질 수 있는 영역을 BFS로 탐색하는 것, $^{3)}$감염되지 않은 영역을 세는 것

고민한 부분

  • 아직 순열이나 조합을 응용하는 문제에 익숙하지 않아 긴 시간동안 고민을 했음
  • 재귀 방식으로 3개의 블럭을 쌓은 후 BFS를 탐색하는데 line 58~에 가지치기 조건을 추가해 시간을 절약함
    • 처음부터 탐색하지 않아도 될 조건을 고민하기보다 시간을 고려하지 않고 정답을 찾을 수 있는 코드를 작성한 후에 고민하는 것이 효율적인 것 같음
    • 그리고 만약 itertools 라이브러리를 활용해 통과할 수 있다면 라이브러리 활용하는 것이 훨씬 효과적
  • 문제를 계속 풀다보니 재귀 형태로 순열과 조합을 구하는 것에 익숙해고 코드 패턴이 눈에 익고 있는 것 같음