less than 1 minute read

고려사항

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;
}

그냥 해본 것

Screenshot 2024-09-06 at 15 02 35 -> 역시 안된다.. C++에서는 cin을 통해 입력을 받을 때, 변수를 선언하는 동시에 입력을 받을 수 없다고 함.

Leave a comment