📢 공지합니다
이 게시글은 메인 페이지에 항상 고정되어 표시됩니다.
https://www.acmicpc.net/problem/10775

package greedy;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.TreeSet;
public class Greedy10775 {
static int G, P;
static int[] parent;
static int find(int x) {
if (parent[x] == x) return x;
else return parent[x] = find(x);
}
static void union(int a, int b) {
int rootA = find(a);
int rootB = find(b);
parent[rootA] = rootB;
}
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());
int result = 0;
parent = new int[G+1];
for (int i = 1; i <= G; i++) {
parent[i] =i;
}
for (int i = 0; i < P; i++) {
int g = Integer.parseInt(br.readLine());
int park = find(g);
if(park ==0) break;
result++;
union(park, park-1);
}
System.out.println(result);
}
}
package greedy;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.TreeSet;
public class Greedy10775 {
static int G, P;
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());
int result = 0;
TreeSet<Integer> parks = new TreeSet<>();
for (int i = 1; i <= G; i++) {
parks.add(i);
}
for (int i = 0; i < P; i++) {
int park = Integer.parseInt(br.readLine());
Integer air = parks.floor(park);
if (air == null) {
break;
}
parks.remove(air);
result++;
}
System.out.println(result);
}
}
문제가 간다하였지만 시간초과가 또 발생!!
TreeSet으로 풀면 엄청 간단하다. 실버인줄
하지만 DSU 방식으로 풀면 조금 헷갈린 문제였다.
| [백준 20303번] 할로윈의 양아치 (0) | 2025.09.24 |
|---|---|
| [백준 1202번] 보석 도둑 (0) | 2025.09.22 |
| [백준 10942번] 팰린드롬? || [백준 1509번] 팰린드롬 분할 (0) | 2025.09.21 |
| [백준 17404번] RGB거리 2 (0) | 2025.09.17 |
| [백준 2239번] 스도쿠 (0) | 2025.09.15 |