<문제 링크>
https://www.acmicpc.net/problem/11053
<정답 코드>
sol ) 다이나믹 프로그래밍으로 가장 긴 증가하는 수열 구하기
1
2
3
4
5
6
7
8
9
10
11
12
13
|
n = int(input())
a = list(map(int, input().split()))
dp = [0 for _ in range(n)]
for i in range(n):
for j in range(i):
if a[i] > a[j] and dp[i] < dp[j]:
dp[i] = dp[j]
dp[i] += 1
#print(i, dp)
print(max(dp))
|
cs |
line 6 ) 배열 a의 i번째 원소를 기준으로
line 8 ) i번째 원소가 j번째 원소들보다 크고(=증가하는 수열) and dp[i]가 현재까지의 가장 긴 수열 길이(dp[j])보다 작으면
line 9 ) dp[i]에 dp[j]값 대입해 증가하는 수열 길이 갱신
dp[i]는 배열 a의 i번째 요소까지의 증가하는 수열의 길이
'프로그래밍 > Python' 카테고리의 다른 글
백준_python 1244번 스위치 켜고 끄기 (구현) (0) | 2024.08.02 |
---|---|
백준_python 1149번 RGB거리 (DP) (0) | 2024.07.30 |
백준_python 23057번 도전 숫자왕 (set, combinations) (0) | 2024.06.19 |
백준_python 2910번 빈도 정렬 (해시, 정렬, lambda) (0) | 2024.06.17 |
백준_python 2579번 계단 오르기 (DP) (0) | 2024.06.14 |