728x90
문제
문제 설명
수열 A가 주어졌을 때, 가장 긴 오름차순의 수열을 구하는 프로그램을 작성해야 한다.
풀이 방식
A = { 70, 30, 50, 60, 70, 0, 10} 다음과 같은 수열이 있다고 하자.
brute force식으로 구해보면 다음과 같다.
어떻게 해도 이 블로그 보다 설명을 잘 할 수 없으니 모르겠다면 참고 하도록 하자.
솔루션
#include <iostream>
#include <vector>
using namespace std;
int arr[1001];
vector<int> dp(1001, 1);
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
cin >> arr[i];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < i; j++)
{
if (arr[i] > arr[j])
dp[i] = max(dp[i], dp[j] + 1);
}
}
int ans = 0;
for (int i = 0; i < n; i++)
ans = max(ans, dp[i]);
cout << ans << endl;
}
'Algorism(PS) > 백준' 카테고리의 다른 글
[C++ / 9095] 1, 2, 3 더하기 (0) | 2023.08.08 |
---|---|
[C++ / 2293] 동전 1 (0) | 2023.08.03 |
[C++ / 2012] 등수 매기기 (0) | 2023.07.29 |
[C++ / 11047] 동전 0 (0) | 2023.07.28 |
[C++ / 1074] Z (0) | 2023.07.26 |