백준(BOJ)

[백준] 11053번 가장 긴 증가하는 부분 수열 : 파이썬(python) 설명

CuriHuS 2021. 10. 23. 21:05
반응형

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

 

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

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

www.acmicpc.net

 


Hint

 

 X

 

 

Solution

 

import sys
N=int(sys.stdin.readline())
a=list(map(int,sys.stdin.readline().split()))
dy=[1]*N
for i in range(1, N):
    for j in range(0, i):
        if a[i]>a[j] and dy[i]<dy[j]+1:
            dy[i]=dy[j]+1
print(max(dy))

리스트 a는 수열을 저장하고

dy리스트는 반복되는 횟수를 저장하는 용입니다.

즉, 예시로 1,2,3,2,1이라는 수열이 존재하면a=[1,2,3,2,1]dy=[1,1,1,1,1]이런 상태로 저장되고for 구문을 거치면a=[1,2,3,2,1]dy=[1,2,3,1,1]로 dy의 리스트 값이 바뀌게 되는 것입니다.

 

 

 

반응형