-
[백준] 11053번 문제 (가장 긴 증가하는 부분 수열) 파이썬(Python) 풀이Problem Solving/Baekjoon 2021. 8. 19. 13:33
n = int(input()) nums = list(map(int, input().split())) dp = [1] * n for i in range(n): for j in range(i): if nums[i] > nums[j]: dp[i] = max(dp[j] + 1, dp[i]) print(max(dp))
dp문제이며, 직관적으로 풀 수 있는 문제다.
for문이 이중으로 있는데,
바깥 for문은 0 ~ n - 1까지 반복되고,
안쪽 for문은 0 ~ 바깥 for문의 인덱스 - 1까지 반복된다.
그러면서 nums[i] > nums[j] 가 성립되면 dp[i]에 dp[j] + 1을 할당하며 수열의 크기를 점진적으로 더하며 구한다.
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준] 11057번 문제 (오르막 수) 파이썬(Python) 풀이 (0) 2021.08.19 [백준] 11055번 문제 (가장 큰 증가 부분 수열) 파이썬(Python) 풀이 (0) 2021.08.19 [백준] 11052번 문제 (카드 구매하기) 파이썬(Python) 풀이 (0) 2021.08.19 [백준] 10844번 문제 (쉬운 계단 수) 파이썬(Python) 풀이 (0) 2021.08.19 [백준] 2579번 문제 (계단 오르기) 파이썬(Python) 풀이 (0) 2021.08.19