Problem Solving/BOJ

[백준 / BOJ] C++ 11722 가장 긴 감소하는 부분 수열

nageune 2023. 2. 9. 14:06
728x90
반응형

11722번: 가장 긴 감소하는 부분 수열

 

문제

https://www.acmicpc.net/problem/11722

 

11722번: 가장 긴 감소하는 부분 수열

수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10} 

www.acmicpc.net

 

 

풀이

가장 긴 증가하는 부분 수열(LIS)의 변형이다. 아래 링크의 풀이에서 이전 원소들 중 작은 값이 아니라 큰 값을 찾으면 된다.

https://khyunx.tistory.com/27

 

[백준 / BOJ] C++ 11053 가장 긴 증가하는 부분 수열

11053번: 가장 긴 증가하는 부분 수열 문제 https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오.

khyunx.tistory.com

 

 

코드

#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  int n;
  cin >> n;
  vector<int> v(n), dp(n, 1);
  for (int i = 0; i < n; i++)
    cin >> v[i];
  for (int i = 0; i < n; i++)
    for (int j = 0; j < i; j++)
      if (v[j] > v[i])
        dp[i] = max(dp[i], dp[j] + 1);
  cout << *max_element(dp.begin(), dp.end()) << '\n';
  return 0;
}

 

728x90
반응형