지우너
[코드트리] 최대 증가 부분 수열 C++ 본문
문제
계획 세우기
가장 작은 증가 부분 수열의 수는 1(증가하는 부분수열이 없을 경우 증가하는 부분 수열의 갯수는 1개이기 때문)
자기보다 앞에 있는 수들을 검사
작다면 그 수까지 있었던 증가 부분 수열의 갯수+1가 현재 dp에 저장된 수보다 크면 갱신
풀이
#include <iostream>
using namespace std;
int n;
int arr[1001];
int dp[1001];
int main() {
// input
cin >> n;
for(int i=0; i<n; ++i){
cin >> arr[i];
dp[i]=1; //dp 1로 초기화
}
// solution
for(int i=1; i<n; ++i){
for(int j=0; j < i; ++j){
if(arr[j]<arr[i]){
dp[i]=max(dp[i], dp[j]+1);
}
}
}
// output
int answer=1;
for(int i=0; i<n; ++i){
answer = max(answer, dp[i]);
}
cout << answer << '\n';
return 0;
}
'Problem Solving' 카테고리의 다른 글
[코드트리] 둘 중 하나 잘 고르기 C++ (0) | 2024.07.17 |
---|---|
[코드트리] 2차원 최대 증가 수열 C++ (0) | 2024.07.07 |
[코드트리] 상한 귤 C++ (0) | 2024.06.30 |
[코트트리] 우리는 하나 C++ (0) | 2024.06.29 |
[코드트리] 뿌요뿌요 C++ (0) | 2024.06.27 |