[백준] 1965번 상자넣기 (자바 풀이)
- 알고리즘 문제 해결(PS)/[백준]
- 2022. 3. 23.
문제
https://www.acmicpc.net/problem/1965
1965번: 상자넣기
정육면체 모양의 상자가 일렬로 늘어서 있다. 상자마다 크기가 주어져 있는데, 앞에 있는 상자의 크기가 뒤에 있는 상자의 크기보다 작으면, 앞에 있는 상자를 뒤에 있는 상자 안에 넣을 수가
www.acmicpc.net
풀이
이 문제는 최장 증가 부분 수열(LIS) 문제이다. LIS에 대해서는 다음 게시글이 설명을 자세하게 있으니 참고하자
https://sskl660.tistory.com/89
[Java]최장 증가 부분 수열(LIS, Longest Increasing Subsequence)
*최장 증가 부분 수열(LIS, Longest Increasing Subsequence) ->최장 증가 부분 수열이란, 주어진 수열에서 오름차순으로 정렬된 가장 긴 부분 수열을 찾는 문제이다. 여기서 부분 수열은 연속적이거나,
sskl660.tistory.com
코드
import java.io.*;
import java.util.Arrays;
import java.util.Scanner;
public class Baekjoon_1965 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int arr[] = new int[N];
for(int i=0; i<N; i++) {
arr[i] = sc.nextInt();
}
int dp[] = new int[N];
Arrays.fill(dp, 1);
int ans = 0;
for(int i=1; i<N; i++) {
for(int j=0; j<i; j++) {
if(arr[i] > arr[j]) {
dp[i] = Math.max(dp[i], dp[j]+1);
}
}
ans = Math.max(dp[i], ans);
}
System.out.println(ans);
}
}
반응형
'알고리즘 문제 해결(PS) > [백준]' 카테고리의 다른 글
[백준] 2531번 회전 초밥 (자바 풀이) (0) | 2022.03.24 |
---|---|
[백준] 2096번 내려가기 (자바 풀이) (0) | 2022.03.23 |
[백준] 1149번 RGB 거리 (자바 풀이) (0) | 2022.03.23 |
[백준] 1022번 소용돌이 예쁘게 출력하기 (자바 풀이) (0) | 2022.03.22 |
[백준] 17822번 원판 돌리기 (자바 풀이) (0) | 2022.03.21 |