BOJ Link
풀이 과정
관심사는 최대 상자의 개수이다. 어떤 상자들로 최대를 만들었는지는 상관이 없다.
따라서,
when cost[i] > cost[0~i-1] 일 때,
dp[i] = (dp[0 ~ i-1] 중 최대 값) +1(i번째 상자 포함)로 놓았다.
이는 2중 for문으로 구현 가능하다.
제출 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] arr = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int[] dp = new int[N];
dp[0] = 1;
for (int i = 1; i < N; i++) {
int prev = 0;
for (int j = 0; j < i; j++) {
if (arr[j] < arr[i] && dp[j] > prev) prev = dp[j];
}
dp[i] = prev + 1;
}
int ans = 0;
for (int e : dp) ans = Math.max(ans, e);
System.out.println(ans);
}
}
'백준 > Java' 카테고리의 다른 글
[백준 18869] 멀티버스 Ⅱ - JAVA (0) | 2024.11.14 |
---|---|
[백준 1679] 숫자놀이 - JAVA (0) | 2024.10.28 |
[백준 1622] 공통 순열 - JAVA (1) | 2024.10.28 |
[백준 1474] 밑 줄 - JAVA (0) | 2024.10.28 |
[백준 1325] 효율적인 해킹 - JAVA (0) | 2024.10.28 |