[BOJ14502] 연구소

Updated:

안전영역 크기 최댓값

  • N*M 지도에 0 빈 칸, 1 벽, 2 바이러스
  • 바이러스 상하좌우 번식
  • 벽 3개 세우기 가능
  • 벽을 적절한 곳에 세워 안전영역 최댓값 구하기

입력

  • N M 세로 가로 (3 <= N, M <= 8)
  • 0, 1, 2 (빈 칸, 벽, 바이러스) 로 이루어진 지도
  • 지도 조건 (2<= 바이러스수 <= 10) (3<= 빈칸)

출력

  • 벽 세운 후 안전영역 최대 크기

설계

  • 벽 3개를 세울 수 있는 가능한 모든 경우의 지도 구성
  • 벽을 세운 맵(복사)을 기준으로 BFS 구현
  • 바이러스마다 BFS 이용해 0이 인접하면 2로 변경
  • 0 갯수 체크하여 최댓값 출력

피드백

  • 벽 세 개를 세우는 부분 구현이 헷갈림
    • 재귀적으로 구현
    • 0에서 1로 바꾼 후 재귀 호출
    • 다시 1을 0으로 바꿔 그 전 상황 유지

How I solved(click to github)


ref :
BOJ14502

Leave a comment