문제
https://www.acmicpc.net/problem/2583
풀이
먼저 모눈종이 2차원 배열(rect)을 만들어서 좌표 입력을 받을때마다 직사각형 영역은 1로 바꾸어서 배열을 채웠다.
배열을 다 채우고 나면 1은 직사각형 영역, 0은 나머지 영역이 된다.
bfs 탐색을 위해서 방문했는지 체크하기 위해 2차원배열을 또하나 만들었다.(land)
전체적으로 이중for문을 돌면서 나머지 영역이고 아직 방문하지 않은 부분이면 bfs탐색을 하도록 했고
이때 나머지 영역의 개수를 세었다.
bfs는 전형적인 형태로 탐색하였고
각 나머지 영역의 넓이를 구하기 위해 큐에 대한 while문을 돌 때마다 넓이 값을 1씩 증가시켰다.
while문이 끝나면 정답 벡터에 하나씩 넣었다. 단, 넓이 값이 1이 아니면 넓이 값을 -1씩 해서 넣어주었다.
코드
https://www.acmicpc.net/source/11989089
결과
'알고리즘 문제풀이 > 알고리즘 C++ 풀이' 카테고리의 다른 글
[백준] 10026번: 적록색약 (C++ 풀이) (0) | 2019.03.02 |
---|---|
[백준] 7562번 : 나이트의 이동 (C++ 풀이) (0) | 2019.03.02 |
[백준] 2493번: 탑 (C++ 풀이) (0) | 2019.02.28 |
[백준] 2206번: 벽 부수고 이동하기 (C++ 풀이) (0) | 2019.02.24 |
[백준] 14502번: 연구소 (C++ 풀이) (0) | 2019.02.22 |