알고리즘(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



반응형