Algorithm/Baekjoon

[Python] 11053. 가장 긴 증가하는 부분 수열

느낌표 공장장 2021. 9. 26. 02:41
n = int(input())    # 수열의 크기
numbers = list(map(int, input().split()))   # 수열

dp = [1 for _ in range(n)] # dp 배열 만들기 (자기자신 1이니까 1로 초기화)
answer = 1  # 가장 긴 증가하는 부분 수열 길이

for i in range(n):
    for j in range(i):  # 현재 위치(i)보다 전의 숫자(j)가 작은지 확인
        if numbers[j] < numbers[i]:
            dp[i] = max(dp[i], dp[j]+1)  # 결국 i위치의 이전 길이중 최댓값에 +1 하게 된다 
            answer = max(dp[i], answer)  # 가장 긴 이라고 했으니, 길어졌다면 큰 값으로 갱신

print(answer)

'Algorithm > Baekjoon' 카테고리의 다른 글

[Python] 11052. 카드 구매하기  (0) 2021.09.26
[Python] 1912. 연속합  (0) 2021.09.26
[Python] 2579. 계단오르기  (0) 2021.09.23
[Python] 11659. 구간 합 구하기 4  (0) 2021.09.19
[Python] 1904. 01타일  (0) 2021.09.19