Problem
Solution
먼저 수열 A의 크기를 입력 받고 for문을 활용해 수열 A의 원소들을 입력 받는다
dp 배열을 모두 1로 초기화한다.
0부터 i-1까지 순회하면서 arr[i] 보다 작은 원소들을 찾고, 작은 원소 arr[j]를 찾으면 dp[i]와 dp[j]+1 중 큰 값을 dp[i]에 저장한다.
마지막으로 dp배열 중 가장 큰 값을 찾아 result에 저장한 후 출력한다.
Answer
#include <iostream>
#include <algorithm>
using namespace std;
int arr[1001];
int dp[1001];
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
for (int i = 0; i < n; i++) {
dp[i] = 1;
}
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 result = 0;
for (int i = 0; i < n; i++) {
result = max(result, dp[i]);
}
cout << result << '\n';
return 0;
}
'Koala - 11기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/Python] 11054 가장 긴 바이토닉 부분 수열 (0) | 2023.07.21 |
---|---|
[Programmers] 광물 캐기 (0) | 2023.07.21 |
[ 백준 / Python ] #25214 크림파스타 (0) | 2023.07.21 |
[백준/python] 1463번 1로 만들기 (0) | 2023.07.20 |
[백준/Python] 1149번: RGB 거리 (0) | 2023.07.19 |