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 | 
