BOJ 15966 군계일학


사용한 알고리즘

  • DP

알고리즘 설명

  • 1씩 증가하는 가장 긴 수열 길이를 찾는 문제이다.
  • 순서를 유지하되, 임의에 값들을 제거할 수 있다.
  • 이 문제는 간단하게 1차원 DP 수열을 잡으면 풀린다.
  • DP(x): 현재 값이 x일때 지금까지 나온 수열 중 1씩 증가하여 x로 끝나는 최대 길이
  • DP(x) = max(DP(x), DP(x-1) + 1)

풀이

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

const int MAX_N=100001;
const int MAX_V=1000001;

int N, dp[MAX_V];
int x, ret;

int main() {
    scanf("%d", &N);
    for (int i=0; i<N; i++) {
        scanf("%d", &x);
        dp[x] = max(dp[x], dp[x-1] + 1);
        ret = max(ret, dp[x]);
    }
    printf("%d\n", ret);
    return 0;
}



© 2020.08. by fbdp1202

Powered by theorydb