카테고리 없음

항해99 리부트코스 알고리즘 3주 3일차 백준 1965 상자넣기

Albosa2lol 2024. 8. 1. 14:24

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

 

def longest_increasing_subsequence(boxes):
    n = len(boxes)
    dp = [1] * n  # 각 상자 자체만으로도 LIS이므로 초기값은 1로 설정
    
    for i in range(1, n):
        for j in range(i):
            if boxes[j] < boxes[i]:
                dp[i] = max(dp[i], dp[j] + 1)
    
    return max(dp)  # dp 배열에서 가장 큰 값이 LIS의 길이

def main():
    import sys
    input = sys.stdin.read
    data = input().split()
    
    n = int(data[0])
    boxes = list(map(int, data[1:n+1]))
    
    result = longest_increasing_subsequence(boxes)
    print(result)

if __name__ == "__main__":
    main()