반응형
백준 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
반응형
'Python > 백준' 카테고리의 다른 글
[백준 파이썬] 2751번 수 정렬하기 2 (0) | 2021.04.29 |
---|---|
[파이썬 백준] 2750번 수 정렬하기 (0) | 2021.04.29 |
[백준 파이썬] 2747번 피보나치 수 (0) | 2021.04.26 |
[백준 파이썬] 1197번 최소 스패닝 트리 (0) | 2021.04.25 |
[백준 파이썬] 1647번 도시 분할 계획 (0) | 2021.04.24 |