시간 & 메모리 제한
문제
입력 & 출력
DFS를 이용한 문제 풀이
package com.Back;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class Back_2583 {
static int col,row,N,area;
static int[][] map;
static boolean[][] visited;
static int[] dx= {-1,1,0,0};
static int[] dy= {0,0,-1,1};
static PriorityQueue<Integer> ans = new PriorityQueue<>();
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuffer sb = new StringBuffer();
col = Integer.parseInt(st.nextToken());
row = Integer.parseInt(st.nextToken());
N = Integer.parseInt(st.nextToken());
map = new int[col][row];
visited = new boolean[col][row];
for (int k = 0; k < N; k++) {
st = new StringTokenizer(br.readLine());
int startY = Integer.parseInt(st.nextToken());
int startX = Integer.parseInt(st.nextToken());
int endY = Integer.parseInt(st.nextToken());
int endX = Integer.parseInt(st.nextToken());
for (int i = startX; i < endX; i++) {
for (int j = startY; j < endY; j++) {
map[i][j]=1;
}
}
}
int count=0;
for (int i = 0; i < col; i++) {
for (int j = 0; j < row; j++) {
if(map[i][j]==0) {
area=0;
count++;
dfs(i,j);
ans.add(area);
}
}
}
sb.append(count+"\n");
while(!ans.isEmpty()) {
sb.append(ans.poll()+" ");
}
System.out.println(sb);
}
private static void dfs(int x, int y) {
map[x][y]=1;
area++;
for (int k = 0; k < 4; k++) {
int xx = x + dx[k];
int yy = y + dy[k];
if(xx<0 || xx>=col || yy<0 || yy>=row)continue;
if(map[xx][yy]==0) {
dfs(xx,yy);
}
}
}
}
- 이 문제는 DFS를 이용해서 문제를 풀 수 있습니다. 또한 BFS를 이용해서도 문제풀이를 진행할 수 있습니다.
- 저의 경우는 DFS를 이용해서 문제풀이를 진행했습니다.
- 오름차순으로 내보내기 위해서 PriorityQueue를 이용해서 담았다가 출력을 했습니다.
'Algorithm > 백준 알고리즘' 카테고리의 다른 글
백준_2293 동전1(자바) / DP (0) | 2021.04.08 |
---|---|
백준_10163 색종이(자바) (0) | 2021.04.06 |
백준_11725 트리의 부모 찾기 (자바) / 자료구조 & dfs (0) | 2021.04.05 |
백준_1158 요세푸스 문제(자바) / 자료구조 (0) | 2021.04.04 |
백준_3040 백설 공주와 일곱 난쟁이(자바) / for문 or DFS (0) | 2021.04.04 |