[백준 02643] 색종이 올려 놓기 [Java]
2025. 10. 4. 09:19ㆍPS 풀이/Baekjoon Online Judge
문제
2643번: 색종이 올려 놓기
boj.ma
풀이
문제 요약
N개의 직사각형 종이를 자신보다 크거나 같은 종이 위에만 쌓아 가장 높게 쌓을 때의 높이를 구하자.
아이디어
종이는 서로의 변에 대해 평행하게만 놓을 수 있으므로 (작은 변의 길이, 큰 변의 길이)를 기준으로 입력받고, 오름차순으로 정렬하자.
public class Main {
private static class Point {
int x, y;
public Point(int x, int y) {
this.x = Math.min(x, y);
this.y = Math.max(x, y);
}
}
A.sort((a, b) -> {
if (a.x == b.x) {
return Integer.compare(a.y, b.y);
}
return Integer.compare(a.x, b.x);
});
각 종이는 자기 자신에 대해 유효하며, 자신보다 큰 종이 위에 놓는 2차원 LIS로 볼 수 있다. 종이는 최대 100개로 이전 종이를 확인할 시간은 충분하다.
int[] dp = new int[N];
Arrays.fill(dp, 1);
int res = 0;
for (int i = 1; i < N; ++i) {
for (int j = 0; j < i; ++j) {
if (A.get(i).x >= A.get(j).x && A.get(i).y >= A.get(j).y) {
dp[i] = Math.max(dp[i], dp[j] + 1);
}
}
res = Math.max(res, dp[i]);
}
풀이 시간
20분
소스코드
https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/normal/02643.java
problem-solving/baekjoon-online-judge/normal/02643.java at main · rogi-rogi/problem-solving
Daily Problem Solving Challenges. Contribute to rogi-rogi/problem-solving development by creating an account on GitHub.
github.com
'PS 풀이 > Baekjoon Online Judge' 카테고리의 다른 글
| [백준 15927] 회문은 회문아니야!! [Java] (0) | 2025.10.08 |
|---|---|
| [백준 25046] 사각형 게임 (Small) [Java] (0) | 2025.10.06 |
| [백준 25918] 북극곰은 괄호를 찢어 [Java] (0) | 2025.10.03 |
| [백준 03614] 정사각형 [Java] (0) | 2025.10.02 |
| [백준 27941] 하이퍼 가지 따기 [Java] (0) | 2025.10.01 |