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++ / 1932] 정수 삼각형 (0) | 2023.07.18 |
---|---|
[C++ / 2563] 색종이 (0) | 2023.07.16 |
[C++ / 15666] N과 M (12) (0) | 2023.07.14 |
[C++ / 1181] 단어 정렬 (0) | 2023.07.13 |
[C++ / 3085] 사탕 게임 (0) | 2023.07.12 |