728x90
문제는 더보기!
더보기
문제
수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오.
예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다.
입력
첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다.
둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000)
출력
첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다.
예제 입력 1 복사
6
10 20 10 30 20 50
예제 출력 1 복사
4
우선 가장 긴 증가하는 수열에대해 알아야 한다.
증가하는 부분수열이란, 수열의 부분수열중 오름차순으로 된것을 말한다. 그 중에서 가장 길이가 긴 수열을 구하면 된다.
이해가 잘 되지않는다면 위글을 한번 읽어보자.
이역시 10개의 입력이 들어온다면 첫번째부터 차례대로 계산을 해보면 된다.
예제로 준 10 20 10 30 20 50을 생각해보자.
첫번째 부터 채워넣는다면, 10은 한개이므로 1이 들어갈 것이다.
그 다음부터 구한 수열에서 자신보다 작은 수중 가장큰 수의 count +1값을 해나가면 된다.
N = int(input())
lst = list(map(int,input().split()))
result = [ 0 for _ in range(N) ]
for i in range(N):
for j in range(i):
if lst[i] > lst[j] and result[i] < result[j]:
result[i] = result[j]
result[i] +=1
print(max(result))
728x90
'Python > 백준' 카테고리의 다른 글
9251_LCS...반례? (0) | 2022.01.05 |
---|---|
2565_전깃줄 (0) | 2022.01.04 |
10844_쉬운계단수 (0) | 2021.12.29 |
1463_1로만들기 (0) | 2021.12.28 |
1932_정수 삼각형 (0) | 2021.12.24 |