๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/1965)
< ์์๋ฃ๊ธฐ >
๋ฌธ์ ํ์ด
์์ ์๋ ์์์ ํฌ๊ธฐ๊ฐ ๋ค์ ์๋ ์์์ ํฌ๊ธฐ๋ณด๋ค ์์ ๊ฒฝ์ฐ ๋ฃ์ ์ ์๋ค๋ฉด, ์ค์ฒฉ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ ํ์ฌ ์์น๋ณด๋ค ์์ ์๋ ์์์ ํฌ๊ธฐ๊ฐ ์์ผ๋ฉด ํ์ฌ ์์น ๊ฐ๊ณผ, ์์ ์์ ์์น์ ๊ฐ +1์ ๋น๊ตํ์ฌ ์ต๋๊ฐ์ผ๋ก ์ ๋ฐ์ดํธํ๋ค.
๋ง์ฝ, ์์ ๊ฐ ์๋์ ๊ฐ๋ค๋ฉด
8
1 6 2 5 7 3 5 6
๋ค์๊ณผ ๊ฐ์ด ํ๊ฐ ์ฑ์์ง๋ค.
| box | 1 | 6 | 2 | 5 | 7 | 3 | 5 | 6 |
| 1 | 2 | 2 | 3 | 4 | 3 | 4 | 5 |
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class _1965_ { // ์์๋ฃ๊ธฐ
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int n = Integer.parseInt(bf.readLine());
int box[] = new int[n];
st = new StringTokenizer(bf.readLine());
for (int i = 0; i < n; i++) {
box[i] = Integer.parseInt(st.nextToken());
}
int dp[] = new int[n];
for (int i = 0; i < n; i++) {
dp[i] = 1;
}
for (int i = 1; i < n; i++) {
for (int j = 0; j < i; j++) {
if (box[j] < box[i]) {
dp[i] = Math.max(dp[i], dp[j] + 1);
}
}
}
int result = 1;
for (int i = 0; i < n; i++) {
result = Math.max(result, dp[i]);
}
System.out.println(result);
}
๋ณ์)
n : ์์์ ๊ฐ์
box : ์์์ ํฌ๊ธฐ
dp : ๊ฐ ์์น์์ ๋ฃ์ ์ ์๋ ์ต๋์ ์์ ๊ฐ์
result : ๋ฃ์ ์ ์๋ ์ต๋์ ์์ ๊ฐ์
์์์ ๊ฐ์๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ์์์ ๊ฐ์๋งํผ ์์์ ํฌ๊ธฐ๋ฅผ ์ ๋ ฅ๋ฐ์ box ๋ฐฐ์ด์ ์ ์ฅํ๋ค. ๊ฐ ์์น์์ ๋ฃ์ ์ ์๋ ์ต๋์ ์์ ๊ฐ์๋ฅผ ๊ตฌํ๊ธฐ ์ํด ๋ฐฐ์ด์ 1๋ก ์ด๊ธฐํํ๋ค. for๋ฌธ์ ํ์ฉํ์ฌ ํ์ฌ ์์น์์ ์์ ์์๋ฅผ ํ์ํ๋ฉฐ ํ์ฌ ์์๋ณด๋ค ์๋ค๋ฉด ์ต๋๊ฐ์ผ๋ก ์ ๋ฐ์ดํธํ๋ค.
์ต์ข dp ๋ฐฐ์ด์ ํ์ํ๋ฉฐ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Baekjoon] 9711_ํผ๋ณด๋์น (0) | 2026.01.09 |
|---|---|
| [Baekjoon] 2294_๋์ 2 (0) | 2026.01.07 |
| [Baekjoon] 11054_๊ฐ์ฅ ๊ธด ๋ฐ์ดํ ๋ ๋ถ๋ถ ์์ด (0) | 2026.01.06 |
| [Baekjoon] 14442_๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ 2 (0) | 2026.01.05 |
| [Baekjoon] 25101_Robin Hood (0) | 2025.12.18 |