11053번: 가장 긴 증가하는 부분 수열
수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이
www.acmicpc.net
1. 문제 설명
2. 풀이
n = int(input())
a = list(map(int, input().split()))
dp = [0 for i 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(max(dp))
여기서도 DP 를 활용하고 이중 for 문을 쓰면 된다.
여기서 DP[index] 에는
a[index] 의 숫자 이전에 나온 수 중에서 a[index] 보다 작은 수를 센 값이 여기 들어간다
10 20 10 30 20 50 이면
1 1 1 3 2 4
그리고 여기서 가장 큰 값이 해당 리스트에서 가장 큰 값이 부분 수열 길이가 되는 것
** 참고 링크
백준 11053번: 가장 긴 증가하는 부분 수열
https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20,..
bitwise.tistory.com
[백준][11053번][DP] 가장 긴 증가 부분 수열
가장 긴 증가 부분 수열 https://www.acmicpc.net/problem/11053 <코드> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include int main(void){ int N; ..
wootool.tistory.com
'Study > Algorithm & Data structure' 카테고리의 다른 글
[백준][DP] 1003번 피보나치함수 python (200924) (0) | 2020.09.24 |
---|---|
[백준][DP] 9095번 1,2,3 더하기 python (200923) (0) | 2020.09.23 |
[백준][DP] 1463번 1로 만들기 python (200921) (0) | 2020.09.21 |
[백준][DP] 2839번 설탕 배달 python (200920) (0) | 2020.09.20 |
[프로그래머스][DP] N으로표현 python (200920) (0) | 2020.09.20 |
댓글