출처: https://bumcrush.tistory.com/182 [맑음때때로 여름]

상세 컨텐츠

본문 제목

백준 1965 상자넣기(dynamic programming)

알고리즘

by 장동균 2020. 7. 9. 00:13

본문

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

 

1965번: 상자넣기

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

www.acmicpc.net

#include <iostream>

using namespace std;

const int MAX = 1000 + 1;
int arr[MAX];
int dp[MAX];
int N;

void maximumBox()
{
    for (int i = 1; i <= N; i++)
    {
        dp[i] = 1;
        for (int j = 1; j <= i; j++)
        {
            if (arr[j] < arr[i] && dp[j] + 1 > dp[i])
                dp[i] += 1;
        }
    }
    int maxNum = 0;
    for (int i = 1; i <= N; i++)
    {
        if (dp[i] > maxNum)
            maxNum = dp[i];
    }
    cout << maxNum;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cin >> N;
    for (int i = 1; i <= N; i++)
        cin >> arr[i];
    maximumBox();
}

백준 11722번 문제랑 똑같다. 뭐 크게 설명할게 없다.

관련글 더보기

댓글 영역