선릉역 1번 출구
baekjoon - 11053 본문
problem. 주어진 수열 중에서 가장 긴 부분의 length를 찾는 문제
key point.
이 문제를 최장 증가 부분 수열이라고 부른다. 그래서 이 알고리즘을 사용해서 문제를 풀면 바로 해결이 된다. 자세한 것은 algorithm study 카테고리에 작성할 것이다.
import sys n = int(input()) ls = list(map(int, sys.stdin.readline().split())) dp = [1] * n // 기본적인 길이는 1이기 때문에 default value를 1로 해준다. for i in range(n): for j in range(i): if ls[j] < ls[i]: dp[i] = max(dp[i], dp[j] + 1) print(max(dp)) |
처음에 이해하는 게 조금 어려웠는데 인강도 듣고 직접 케이스를 찾아서 작성해보니까 이해가 됐다.
이런 알고리즘을 어떻게 작성하는 건지.. 다들 대단하다
'Algorithm > Algorithm 문제풀이' 카테고리의 다른 글
baekjoon - 1912 (0) | 2021.09.16 |
---|---|
baekjoon - 14002 (0) | 2021.09.16 |
baekjoon - 2193 (0) | 2021.09.13 |
baekjoon - 10844 (0) | 2021.09.13 |
baekjoon - 15990 (0) | 2021.09.13 |
Comments