백준/Java

[백준 1965] 상자넣기 - JAVA

SH3542 2024. 10. 31. 17:32

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