문제 링크입니다: https://www.acmicpc.net/problem/17144
미세먼지의 확산이 동시다발적으로 일어나기 때문에 배열을 복사해야하는 점이 귀찮았지만 재밌는 문제였습니다.
알고리즘은 아래와 같습니다.
1. 매 초마다 미세먼지의 확산을 진행하는데 BFS 알고리즘을 적용하듯이 4 방향을 모두 탐색하여 범위 안에 있는 칸이면 각 칸마다 (해당 칸의 미세먼지 크기 / 5)를 더해주고 해당 칸에서는 그만큼 빼주면 됩니다.
1.1 여기서 주의할 점은 배열을 계속 업데이트하면 동시다발적으로 이루어지는 것이 아니기 때문에 복사한 배열에서 미세먼지 여부를 파악하고 미세먼지 양 업데이트는 실제 배열에다가 해주면 됩니다.
2. 공기청정기도 마찬가지로 현재 배열을 복사한 상태에서 전처리를 해주면 편합니다.
2.1 반시계 방향, 시계 방향으로 공기가 흐르기 때문에 미리 ccw, cw 배열을 잡아 움직이는 방향 인덱스를 저장해주는 것이 편합니다.
2.2 반복문의 탈출 조건을 잘 잡는다면 쉽게 공기의 흐름대로 미세먼지를 이동시킬 수 있습니다.
3. 현재 배열에 있는 미세먼지의 크기들을 모두 합친 뒤 출력합니다.
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
반응형
'알고리즘 > BOJ' 카테고리의 다른 글
백준 12116번 Uzastopni (0) | 2019.05.15 |
---|---|
백준 12115번 Baza (0) | 2019.05.15 |
백준 17143번 낚시왕 (4) | 2019.05.09 |
백준 17142번 연구소 3 (3) | 2019.05.08 |
백준 17140번 이차원 배열과 연산 (2) | 2019.05.08 |