PS/BOJ
백준 1965번: 상자넣기 (C++)
도비(Doby)
2022. 6. 7. 22:33
https://www.acmicpc.net/problem/1965
1965번: 상자넣기
정육면체 모양의 상자가 일렬로 늘어서 있다. 상자마다 크기가 주어져 있는데, 앞에 있는 상자의 크기가 뒤에 있는 상자의 크기보다 작으면, 앞에 있는 상자를 뒤에 있는 상자 안에 넣을 수가
www.acmicpc.net
Solved By: LIS
몇 달만에 풀어본 LIS 문제였습니다. 본인 이전에 작은 값이 없으면 그 값은 1을 가진다는 걸 인지 못 한 채로 계속 틀렸었습니다. 그걸 인지하니 바로 풀리더군요.
#include <iostream>
#define MAX 1001
using namespace std;
int n;
int arr[MAX];
int cache[MAX];
int main(){
cin >> n;
for(int i = 1; i <= n; i++){
cin >> arr[i];
}
int answer = 0; // maxValue
for(int i = 1; i <= n; i++){
cache[i] = 1; // init, 이전 index에 아무 것도 없다면 본인 자체로 길이 1을 차지
for(int j = 1; j < i; j++){
if(arr[j] < arr[i]){
cache[i] = max(cache[i], cache[j] + 1);
}
}
answer = max(answer, cache[i]);
}
cout << answer;
return 0;
}