알고리즘(python)/기본
[Python]동적계획법 백준 11053
개발일기
2020. 1. 11. 00:43
반응형
문제
https://www.acmicpc.net/problem/11053
가장 먼저 떠오르는방법은 현재보다 작은 값인지 비교해 보고 작다면 그중 가장 긴 수열의
길이에 1을 더하는 방식이다.
그런데 그렇게 하면 n^2의 시간이 걸린다. 하지만 수열의 크기가 작아 성공 할거같다.
조금 실수해서 코드를 잘못짜면 찾고 고치는데 매우 시간이 오래걸리는거같다. 스트레스도
많이받고...
이번문제는 실수가 좀 있어서 오래걸렸다.
나는 항상 부호처리에서 많이 일어나는거같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import sys n=int(sys.stdin.readline()) num_list=list(map(int,sys.stdin.readline().split())) result=[0 for _ in range(n)] result[0]=1 for i in range(n): max_value=0 for j in range(i): if num_list[i]>num_list[j]: #현재 수보다 작은수중에서 if max_value<result[j]:#최대값을 찾아서 max_value=result[j] result[i] = max_value + 1 #최대값에 1을 더해준다 없다면 1 print(max(result)) | cs |
반응형