[백준]11053 - 가장 긴 증가하는 부분 수열
고려사항
Python
#S2_11053_가장 긴 증가하는 부분 수열
def lng(n,a):
dp=[1]*n
for i in range(n):
for j in range(i):
if a[i]>a[j]:
dp[i]=max(dp[i],dp[j]+1)
return max(dp)
n=int(input())
a=list(map(int,input().split()))
print(lng(n,a))
C++
#include <iostream>
#include <vector>
#include <algorithm> // max 함수 사용
using namespace std;
int lng(int n, vector<int>& a) {
/* &는 a가 vector<int> 타입의 참조임을 나타냄.
즉, a라는 벡터의 복사본을 만들지 않고, 함수가 호출된 곳에 있는 벡터 자체에 접근하여
그 벡터의 내용을 수정하거나 읽을 수 있게 함. */
vector<int> dp(n,1); // dp 배열을 1로 초기화
for (int i=0; i<n; i++) {
for (int j=0; j<i; j++) {
if (a[i]>a[j]) {
dp[i]=max(dp[i], dp[j]+1);
}
}
}
return *max_element(dp.begin(), dp.end());
}
int main() {
int n;
cin >> n;
vector<int> a(n);
for (int i=0; i<n; i++) {
cin >> a[i];
}
cout << lng(n,a) << endl;
return 0;
}
그냥 해본 것
-> 역시 안된다.. C++에서는 cin을 통해 입력을 받을 때, 변수를 선언하는 동시에 입력을 받을 수 없다고 함.
Leave a comment