https://www.acmicpc.net/problem/11053
11053번: 가장 긴 증가하는 부분 수열
수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이
www.acmicpc.net
문제 풀이
DP 문제의 특성을 이용해 한 번의 반복문으로 풀려고 했는데 잘 풀리지 않았다.
이중 반복문을 이용해 최장 증가하는 부분 수열 값을 구했다.
소스 코드
#include <iostream>
using namespace std;
int num[1001] = { 0 };
int cnt[1001] = { 0 };
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> num[i];
}
for (int i = 0; i < n; i++) {
cnt[i] = 1;
for(int j = 0; j < i; j++) {
if (num[i] > num[j])
cnt[i] = max(cnt[i], cnt[j] + 1);
}
}
int max_num = 1;
for (int i = 0; i < n; i++) {
max_num = max(max_num, cnt[i]);
}
cout << max_num << '\n';
}
'알고리즘' 카테고리의 다른 글
[백준] 15486번 퇴사 2 C++ 문제풀이 (0) | 2023.09.15 |
---|---|
[백준] 2293번 동전 1 C++ 문제풀이 (0) | 2023.09.14 |
[백준] 1149번 RGB거리 C++ 문제풀이 (0) | 2023.09.12 |
[백준] 9466번 텀 프로젝트 C++ 문제풀이 (0) | 2023.09.11 |
[백준] 13549번 숨바꼭질 3 C++ 문제풀이 (0) | 2023.09.10 |