- Today
- 68
- Total
- 230,484
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Archives
- 2022/05 (2)
- 2022/04 (11)
- 2022/03 (11)
- 2022/02 (1)
- 2022/01 (2)
- 2021/11 (2)
- 2021/10 (2)
- 2021/09 (4)
- 2021/02 (1)
- 2020/07 (1)
- 2020/06 (6)
- 2020/05 (5)
- 2020/04 (5)
- 2020/03 (5)
- 2020/02 (6)
- 2020/01 (6)
- 2019/12 (7)
- 2019/11 (8)
- 2019/09 (7)
- 2019/06 (2)
- 2019/05 (6)
- 2019/04 (4)
- 2019/03 (8)
- 2019/02 (5)
- 2019/01 (2)
- 2018/11 (7)
- 2018/10 (10)
- 2018/09 (2)
- 2018/07 (2)
- 2018/05 (9)
Joonas' Note
BOJ 17142 - 연구소 3 본문
링크: https://www.acmicpc.net/problem/17142
문제
연구소에 이미 존재하는 바이러스들 중 \(m~(2\le m \le 10)\)개를 활성 상태로 바꾸어 바이러스를 퍼뜨리는 문제이다. 그 때, 연구소의 모든 빈칸에 바이러스가 퍼지게 하는 최소 시간을 구해야 한다.
풀이
연구소에 존재하는 바이러스 들 중 \(m\)개를 골라야한다. DFS 같은 방법으로 고를 수 있지만, next_permutation을 사용하면 간단하다.
4개 중 2개를 고르는 조합은 0011 → 0101 → 0110 → 1001 → 1010 → 1100 순으로 진행된다.
이런 특징을 사용하여 매번 적당히 \(m\)개를 선택하여 플러드 필(Flood Fill, BFS)을 한다.
모든 빈칸을 방문한다면 그 때의 탐색 시간을, 그렇지 못한다면 \(\infty\)을 반환하면서 모든 조합을 확인하여 최소 시간을 구한다. \(m\)개 중 2의 개수(\(\le 10\))를 고르는 조합의 수만큼 반복된다.
시간복잡도는 \(O({}_{10}C_m \cdot N^2)\)
코드
반응형
'알고리즘 > 문제 풀이' 카테고리의 다른 글
BOJ 13325 - 이진 트리 (0) | 2019.09.16 |
---|---|
UVa 10918 - Tri Tiling (3) | 2019.04.15 |
BOJ 17142 - 연구소 3 (0) | 2019.04.15 |
BOJ 17140 - 이차원 배열과 연산 (0) | 2019.04.15 |
BOJ 14852 - 타일 채우기 3 (0) | 2019.03.21 |
BOJ 9375 - 패션왕 신해빈 (0) | 2019.03.21 |
0 Comments