목록전체 글 (542)
선릉역 1번 출구
problem. 가장 긴 부분의 갯수 출력(11053과 동일), 부분 수열 출력 key point 이중 for문을 돌릴 때 for i in range(n): k = 0 for j in range(i): if ls[j]
최장 증가 부분 수열이란? 원소가 n개인 배열의 일부 원소를 골라내 만든 부분 수열 중에서(상대적인 순서는 유지) 길이가 최대인 수열을 의미한다. ex) {4, 2, 3, 1, 6, 5}이라면? {2, 3, 6}이 된다. 가장 기본적인 해결 방안은 dynamic programming을 사용하는 것이다. dp[i] : i까지 인덱스 중 가장 긴 수열의 길이 dp = [1] * n for i in range(n): for j in range(i): if ls[j] 2, 1 번째 -> 3, 2 번째 -> 3, 3 번째 -> 4, 4번째 -> 4가 된다.
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]