백준

백준 1965 상자넣기(Java)

Park DJ 2023. 2. 10. 01:34

https://www.acmicpc.net/problem/1965

 

1965번: 상자넣기

정육면체 모양의 상자가 일렬로 늘어서 있다. 상자마다 크기가 주어져 있는데, 앞에 있는 상자의 크기가 뒤에 있는 상자의 크기보다 작으면, 앞에 있는 상자를 뒤에 있는 상자 안에 넣을 수가

www.acmicpc.net


 

해석 및 팁

 


 

이 문제는 백준 11053 가장 긴 증가하는 부분 수열 문제와 동일한 문제입니다. 주어진 수열에서 가장 긴 증가하는 부분 수열의 길이를 찾아주면 됩니다.

 


 

Java 코드

 


import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int max = -1;
    int n = sc.nextInt();
    int arr[] = new int[n];
    int dp[] = new int[n];
    

    for(int i = 0; i < n; i++) {
      arr[i] = sc.nextInt();
      dp[i] = 1;
    }
    
    for(int i = 0; i < n; i++) {
      for(int j = 0; j < i; j++) {
        if(arr[j] < arr[i] && dp[i] <= dp[j]) dp[i] = dp[j] + 1;
      }
    }

    for(int i = 0; i < n; i++) max = Math.max(max, dp[i]);

    System.out.println(max);
  }
}