fork download
  1. #include <stdio.h>
  2.  
  3. int main() {
  4. int N;
  5. scanf("%d", &N);
  6.  
  7. int A[N]; // 수열 A를 저장할 배열
  8. int dp[N]; // 각 위치에서 가장 긴 증가하는 부분 수열의 길이를 저장할 배열
  9. int max_length = 0; // 가장 긴 증가하는 부분 수열의 길이
  10.  
  11. // 수열 A 입력
  12. for (int i = 0; i < N; i++) {
  13. scanf("%d", &A[i]);
  14. dp[i] = 1; // 초기값은 1로 설정
  15. }
  16.  
  17. // 각 숫자에 대해 이전 숫자들과 비교하여 가장 긴 증가하는 부분 수열의 길이 구하기
  18. for (int i = 1; i < N; i++) {
  19. for (int j = 0; j < i; j++) {
  20. if (A[j] < A[i] && dp[j] + 1 > dp[i]) {
  21. dp[i] = dp[j] + 1;
  22. }
  23. }
  24. if (dp[i] > max_length) {
  25. max_length = dp[i];
  26. }
  27. }
  28.  
  29. // 가장 긴 증가하는 부분 수열의 길이 출력
  30. printf("%d\n", max_length);
  31.  
  32. return 0;
  33. }
  34.  
Success #stdin #stdout 0.01s 5304KB
stdin
6
10 20 10 30 20 50
stdout
4