반응형
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의 리스트 값이 바뀌게 되는 것입니다.
반응형
'백준(BOJ)' 카테고리의 다른 글
백준 알고리즘을 시작하기 전 알면 좋은 코드 모음 #1 (0) | 2021.10.24 |
---|---|
[백준] 2579번 계단 오르기 : 파이썬(python) 설명 (0) | 2021.10.23 |
[백준] 2231번 분해합 : 파이썬(python) 설명 (0) | 2021.02.24 |
[백준] 2579번 문제 풀이 : 파이썬(python) 코드 설명 (0) | 2021.02.17 |
[백준] 3053번 문제 풀이 : 파이썬(python) 코드 설명 (0) | 2021.02.09 |