https://www.acmicpc.net/problem/1965
1965번: 상자넣기
정육면체 모양의 상자가 일렬로 늘어서 있다. 상자마다 크기가 주어져 있는데, 앞에 있는 상자의 크기가 뒤에 있는 상자의 크기보다 작으면, 앞에 있는 상자를 뒤에 있는 상자 안에 넣을 수가
www.acmicpc.net
과정
- dp를 1로 초기화 해준다.
- 현재 위치 이전 값들과 비교하여 만약 num이 작은 경우 dp[now] 와 dp[prev] + 1을 비교 해준다.
- dp[now]가 작은 경우 dp[prev] + 1을 해준다. 1은 현재 상자가 반영된 경우
생각해보기
비교된 값들 중 현재까지 비교했던 가장 큰 값을 저장을 해놓는다면 조금 더 빠른 속도로 돌아가는 대신 메모리를 더 사용하게 될 것 같다.
코드
더보기
#include<iostream>
using namespace std;
int n;
int dp[1001];
int nums[1001];
void input(){
cin>>n;
for(int i=0;i<n;i++){
cin>>nums[i];
dp[i]=1;
}
}
void solution(){
int ret=0;
for(int now=0;now<n;now++){
for(int prev=0;prev<now;prev++){
if(nums[now] > nums[prev])
dp[now]=max(dp[now],dp[prev]+1);
}
ret=max(ret,dp[now]);
}
cout<<ret<<'\n';
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
input();
solution();
return 0;
}

728x90
'알고리즘 > 백준 문제' 카테고리의 다른 글
| [ALGORITHM] 백준 2011 - 암호코드 (0) | 2022.10.17 |
|---|---|
| [ALGORITHM] 백준 18185 - 라면 사기(Small) (0) | 2022.10.17 |
| [ALGORITHM] 백준 4195 - 친구 네트워크 (1) | 2022.10.08 |
| [ALGORITHM] 백준 1717 - 집합의 표현 (Weighted Union Find) (0) | 2022.10.07 |
| [ALGORITHM] 백준 10875 - 뱀 (0) | 2022.10.06 |
댓글