그리드를 기본으로 파인드유니온을 통해서 부모가 0 인경우 까지 구하는 방식
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
// 공항 문제 - 10775번
public class Airport {
static int G, P;
static int result = 0;
static int[] parents;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
G = Integer.parseInt(br.readLine());
P = Integer.parseInt(br.readLine());
parents = new int[G+1];
for(int i = 1; i <= G; i++) {
parents[i] = i;
}
for(int i = 0; i < P; i++) {
int g = Integer.parseInt(br.readLine());
int emptyGate = find(g);
if(emptyGate == 0) {
break;
}
result+=1;
union(emptyGate, emptyGate - 1);
}
System.out.println(result);
}
static int find(int x) {
if(x == parents[x]) return x;
return parents[x] = find(parents[x]);
}
static void union(int a, int b) {
a = find(a);
b = find(b);
if(a != b) {
parents[a] = b;
}
}
}
'코딩 테스트 > 백준' 카테고리의 다른 글
백준 11438 자바 - LCA 2 문제 (0) | 2021.03.08 |
---|---|
백준 2169 자바 - 로봇 조종하기 문제 (0) | 2021.03.07 |
백준 11505 자바 - 구간 곱 구하기 (0) | 2021.03.07 |
백준 1194 자바 - 달이 차오른다, 가자. 문제 (0) | 2021.03.07 |
백준 17143 자바 - 낚시왕 문제 (0) | 2021.03.02 |