문제링크 : https://www.acmicpc.net/problem/14231
14231번: 박스 포장
영선이는 과대 포장으로 유명한 남규 회사에서 아르바이트를 한다. 영선이는 여러 박스들을 여러겹으로 포장하는 업무를 맡았다. 박스를 포장할 때 규칙이 있는데, 일단 박스를 일렬로 주어진
www.acmicpc.net
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define MAX 987654321
#define pii pair <int, int>
int arr[5001];
int dp[5001];
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
int N;
cin >> N;
for(int i=1; i<=N; i++)
{
cin >> arr[i];
}
int result = 0;
for(int i=1; i<=N; i++)
{
dp[i]=1; //초기값
for(int j=1; j<i; j++)
{
if (arr[j] < arr[i]) //앞에 있는 박스가 뒤에 있는 박스보다 작아지면
{
dp[i] = max(dp[i], dp[j]+1);
}
}
result = max(result, dp[i]); //과대 포장 최대치 저장
}
cout << result;
return 0;
}
dp 문제이다.
각 값마다 시작값은 1이기에 dp[i]를 1로 초기화하고 시작한다.
앞에 있는 박스가 뒤에 있는 박스보다 작아지면 현재 dp와 그전 dp + 1을 비교하여 큰 값을 넣고, 이렇게 구한 값중 최대치를 출력한다.
'백준 > 실버' 카테고리의 다른 글
[백준 20117번] 호반우 상인의 이상한 품질 계산법 (C++) (0) | 2023.05.19 |
---|---|
[백준 15787번] 기차가 어둠을 헤치고 은하수를 (C++) (0) | 2023.05.17 |
[백준 13335번] 트럭 (C++) (0) | 2023.05.13 |
[백준 16943번] 숫자 재배치 (C++) (0) | 2023.05.09 |
[백준 17615번] 볼 모으기 (C++) (0) | 2023.05.07 |