DHistory

[Baekjoon] DP - 11053 가장 긴 증가하는 부분 수열 (오답노트) 본문

Computer Science/Algorithm

[Baekjoon] DP - 11053 가장 긴 증가하는 부분 수열 (오답노트)

ddu0422 2023. 9. 25. 07:03

문제

 

11053번: 가장 긴 증가하는 부분 수열

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

www.acmicpc.net

 

풀이

import sys

n = int(sys.stdin.readline().rstrip())
numbers = [0] + list(map(int, sys.stdin.readline().rstrip().split()))[:n]


def solution(a):
    d = [1] * (len(a))

    for i in range(2, len(numbers)):
        for j in range(1, i):
            # 현재 숫자보다 작은 부분 수열 중 가장 길이가 긴 부분 수열
            if a[i] > a[j] and d[i] < d[j] + 1:
                d[i] = d[j] + 1

    return max(d)


print(solution(numbers))

 

채점 결과