728x90
문제 설명
- 빈 공간, 벽, 바이러스로 구성된 2차원 array를 입력받아 빈 공간 세 곳에 벽을 세운 후 바이러스가 퍼질 수 없는 영역의 수를 세는 문제
- 구현해야 하는 내용은 빈 공간에 $^{1)}$세 개의 벽을 세우는 것, $^{2)}$바이러스가 퍼질 수 있는 영역을 BFS로 탐색하는 것, $^{3)}$감염되지 않은 영역을 세는 것
고민한 부분
- 아직 순열이나 조합을 응용하는 문제에 익숙하지 않아 긴 시간동안 고민을 했음
- 재귀 방식으로 3개의 블럭을 쌓은 후 BFS를 탐색하는데 line 58~에 가지치기 조건을 추가해 시간을 절약함
- 처음부터 탐색하지 않아도 될 조건을 고민하기보다 시간을 고려하지 않고 정답을 찾을 수 있는 코드를 작성한 후에 고민하는 것이 효율적인 것 같음
- 그리고 만약
itertools
라이브러리를 활용해 통과할 수 있다면 라이브러리 활용하는 것이 훨씬 효과적
- 문제를 계속 풀다보니 재귀 형태로 순열과 조합을 구하는 것에 익숙해고 코드 패턴이 눈에 익고 있는 것 같음
'알고리즘 공부 > 백준 문제풀이' 카테고리의 다른 글
[백준 python] 14501번 퇴사 (0) | 2022.08.05 |
---|---|
[백준 python] 14889번 스타트와 링크 (0) | 2022.08.05 |
[백준 python] 14891번 톱니바퀴 (0) | 2022.08.05 |
[백준 python] 14503번 로봇 청소기 (0) | 2022.08.02 |
[백준 python] 14888번 연산자 끼워넣기 (0) | 2022.07.31 |