ALGORITHM/BOJ

[BOJ] 14502번 연구소 (C++)

yegyeom 2021. 10. 8. 15:49

문제 링크 (https://www.acmicpc.net/problem/14502)

 

14502번: 연구소

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

www.acmicpc.net

0: 빈칸 / 1: 벽 / 2: 바이러스

입력받은 직사각형 중에서 0인 부분은 바이러스가 퍼질 수 있는 지역이다. 바이러스가 최대한 퍼지지 않도록 벽을 세워야 하는데 세울 수 있는 벽의 개수는 무조건 3개이다. 벽을 세울 수 있는 곳들 중 3곳을 골라 벽을 세웠을 때 얻을 수 있는 안전 영역의 크기의 최댓값을 구하는 문제!

 

1. 바이러스(2) 좌표, 빈 칸(0) 좌표를 모두 vector에 기억해놓음

2. false로 초기화된 bool형 vector를 생성 (bool형 vector의 크기 = 빈 칸 좌표의 개수)

3. bool형 vector중 3개만 true로 설정하고 next_permutation (벽이 3개이므로)

4. 조합이 완성되면 true인 위치에 벽 설치

5. 바이러스 위치에서 bfs 시작

6. 안전 영역(0) 수를 count => 최댓값 기억


[소스코드]


더보기

2021-10-07

Gold 5

알고리즘 분류

- 그래프 이론

- 그래프 탐색

- 브루트포스 알고리즘

- 너비 우선 탐색

'ALGORITHM > BOJ' 카테고리의 다른 글

[BOJ] 10026번 적록색약 (C++)  (0) 2021.10.14
[BOJ] 14501번 퇴사 (C++)  (0) 2021.10.09
[BOJ] 14888번 연산자 끼워넣기 (C++)  (0) 2021.09.07
[BOJ] 1713번 후보 추천하기 (C++)  (0) 2021.09.03
[BOJ] 3452번 고스택 (C++)  (0) 2021.09.03