Python/백준

[백준 파이썬] 11053번 가장 긴 증가하는 부분 수열

AI 꿈나무 2021. 4. 27. 10:36
반응형

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

www.acmicpc.net/problem/11053

 

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

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

www.acmicpc.net

 

파이썬 풀이

동적 프로그래밍을 활용한 풀이입니다.

import sys
import collections
input = sys.stdin.readline

N = int(input()) # 수열 크기
dp = collections.defaultdict(int) # 데이터 저장
stack = []
arr = list(map(int, input().split())) # 수열 정보 얻기

for i in range(N): # dp 1로 초기화
    dp[i] = 1

# arr 탐색
for i in range(N):
    for j in range(i):
        if arr[i] > arr[j]:
            dp[i] = max(dp[i], dp[j]+1) # dp 갱신

print(max(dp.values()))

 

출처

 아래 게시글에 LIS가 잘 정리되어 있습니다!

 

가장 긴 증가하는 부분 수열(LIS) 완전 정복 - 백준 파이썬

최근 들어, 알고리즘에 재미를 붙였다. 백준 문제를 풀면 문제 난이도마다 티어가 올라가는 재밌는 사이트(solved.ac)가 생겨서 뭔가 동기 부여되는 것 같다. 언어는 python을 사용하고 있다. (취준

seohyun0120.tistory.com

반응형