๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/6193)
< Hungry Cows >
๋ฌธ์ ํ์ด
dp๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ์ ๋จน์ด๋ฅผ ๋จน์ ์๋ณด๋ค ๋ฒํธ๊ฐ ๋ ํฐ ์๋ง ๋จน์ด๋ฅผ ๋จน์ฌ ์ต๋ ๋จน์ด๋ฅผ ์ค ์ ์๋ ์์ ์๋ฅผ ๊ตฌํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class _6193_ { // Hungry Cows
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 arr[] = new int[n];
int idx = 0;
int range = n / 20;
if (n % 20 != 0) {
range += 1;
}
for (int i = 0; i < range; i++) {
st = new StringTokenizer(bf.readLine());
while (st.hasMoreTokens()) {
arr[idx++] = 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 (arr[j] < arr[i]) {
dp[i] = Math.max(dp[i], dp[j] + 1);
}
}
}
int result = 0;
for (int i = 0; i < n; i++) {
result = Math.max(result, dp[i]);
}
System.out.println(result);
}
๋ณ์)
n : ์ ๋ ฅ๊ฐ
arr : ์ ๋ฒํธ
dp : ๋จน์ด๋ฅผ ์ค ์ ์๋ ์์ ์
n์ ์ ๋ ฅ๋ฐ๋๋ค. ์ ๋ฒํธ๋ ํ ์ค์ 20๊ฐ์ฉ ์ ๋ ฅ๋๋ฏ๋ก 20์ผ๋ก ๋๋์ด ๋จ์ด์ง๋ค๋ฉด n/20 ๋งํผ, ๋๋์ด ๋จ์ด์ง์ง ์๋๋ค๋ฉด n/20 +1๋งํผ ๋ฐ๋ณตํ์ฌ ์ ๋ ฅ๋ฐ์ arr์ ์ ์ฅํ๋ค. dp ์ด๊ธฐ๊ฐ์ ๋ค 1๋ก ์ ์ฅํ๋ค. ๋ฐฐ์ด์ ์ ์ฒด ํ์ํ๋ฉฐ ํ์ฌ ์ ๋ฒํธ๋ณด๋ค ์์ ์๋ ์ ๋ฒํธ๊ฐ ์๋ค๋ฉด +1 ํ ๊ฐ๊ณผ ํ์ฌ ๊ฐ ์ค ์ต๋๊ฐ์ผ๋ก ์ ๋ฐ์ดํธํ๋ค.
์ต์ข dp ๋ฐฐ์ด์ ํ์ํ๋ฉฐ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Baekjoon] 11057_์ค๋ฅด๋ง ์ (0) | 2026.01.15 |
|---|---|
| [Baekjoon] 10844_์ฌ์ด ๊ณ๋จ ์ (0) | 2026.01.14 |
| [Baekjoon] 2688_์ค์ด๋ค์ง ์์ (0) | 2026.01.12 |
| [Baekjoon] 9711_ํผ๋ณด๋์น (0) | 2026.01.09 |
| [Baekjoon] 1965_์์๋ฃ๊ธฐ (0) | 2026.01.08 |