๐ ๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/11053
https://www.acmicpc.net/problem/11722
๐ ๋ฌธ์ ์์ฝ
1๏ธโฃ ๋ฐฑ์ค 11053 - ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด (LIS)
- ์์ด์์ "์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด" ์ค์์ ๊ฐ์ฅ ๊ธด ๊ธธ์ด๋ฅผ ์ฐพ๋ ๋ฌธ์ .
2๏ธโฃ ๋ฐฑ์ค 11722 - ๊ฐ์ฅ ๊ธด ๊ฐ์ํ๋ ๋ถ๋ถ ์์ด (LDS)
- ์์ด์์ "๊ฐ์ํ๋ ๋ถ๋ถ ์์ด" ์ค์์ ๊ฐ์ฅ ๊ธด ๊ธธ์ด๋ฅผ ์ฐพ๋ ๋ฌธ์ .
๐ ํ์ด ๋ฐ ์๊ณ ๋ฆฌ์ฆ
- dp[i] ์ ์
- dp[i]๋ nums[i]๋ฅผ ๋ง์ง๋ง ์์๋ก ํ๋ ์ฆ๊ฐ/๊ฐ์ ์์ด์ ์ต์ฅ ๊ธธ์ด.
- ์ ํ์ (DP)
- LIS (Longest Increasing Subsequence)
- dp[i] = max(dp[i], dp[j] + 1) (๋จ, nums[i] > nums[j])
- LDS (Longest Decreasing Subsequence)
- dp[i] = max(dp[i], dp[j] + 1) (๋จ, nums[i] < nums[j])
- LIS (Longest Increasing Subsequence)
- ์ต์ข
๊ฒฐ๊ณผ
- dp ๋ฐฐ์ด์์ ์ต๋๊ฐ ์ถ๋ ฅ (Arrays.stream(dp).max().getAsInt())
๐ก ์ฝ๋
1. ๋ฐฑ์ค 11053 - ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด (LIS)
public class Baekjoon_11053 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] nums = new int[n];
int[] dp = new int[n]; // dp[i]๋ num[i]๊ฐ ๋ง์ง๋ง ์ซ์์ธ ์ฆ๊ฐ ์์ด์ ์ต๋ ๊ฐฏ์
dp[0] = 1;
for (int i = 0; i < n; i++) {
nums[i] = sc.nextInt();
}
for (int i = 1; i < n; i++) {
for (int j = i - 1; j >= 0; j--) {
if (nums[i] > nums[j]) {
dp[i] = Math.max(dp[i], dp[j] + 1);
}
}
}
System.out.println(Arrays.stream(dp).max().getAsInt());
}
}
2. ๋ฐฑ์ค 11722 - ๊ฐ์ฅ ๊ธด ๊ฐ์ํ๋ ๋ถ๋ถ ์์ด (LDS)
public class Baekjoon_11722 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] nums = new int[n];
int[] dp = new int[n]; // dp[i]๋ nums[i]๋ฅผ ๋ง์ง๋ง ์ซ์์ธ ๊ฐ์ ์์ด์ ์ต๋ ๊ธธ์ด
dp[0] = 1;
for (int i = 0; i < n; i++) {
nums[i] = sc.nextInt();
}
for (int i = 1; i < n; i++) {
for (int j = i - 1; j >= 0; j--) {
if (nums[i] < nums[j]) {
dp[i] = Math.max(dp[i], dp[j] + 1);
}
}
}
System.out.println(Arrays.stream(dp).max().getAsInt());
}
}
๐ ์๊ฐ ๋ณต์ก๋ ๋ถ์
- O(N^2):
- N ≤ 1000์ด๋ฏ๋ก ์ต์ ์ ๊ฒฝ์ฐ O(1,000,000)
'์๊ณ ๋ฆฌ์ฆ(JAVA)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 9251 "LCS (์ต์ฅ ๊ณตํต ๋ถ๋ถ ์์ด)" (JAVA) (0) | 2025.02.19 |
---|---|
๋ฐฑ์ค 11054 "๊ฐ์ฅ ๊ธด ๋ฐ์ดํ ๋ ๋ถ๋ถ ์์ด" (JAVA) (0) | 2025.02.18 |
๋ฐฑ์ค 1316 "๊ทธ๋ฃน ๋จ์ด ์ฒด์ปค" (JAVA) (0) | 2025.02.18 |
๋ฐฑ์ค 1003 "ํผ๋ณด๋์น ํจ์" (JAVA) (0) | 2025.02.17 |
๋ฐฑ์ค 24268 "2022๋ ๋ฌด์์ด ํน๋ณํ ๊น" (JAVA) (0) | 2025.02.17 |