[AlgoSpot] LIS.py

전영서·2021년 8월 27일
0

Algorithm

목록 보기
6/89

1. 문제

알고스팟의 LIS문제이다.

2. 코드

C = int(input())

def inputlst() :
    return list(map(int,input().split()))

def exe() :
    N = int(input())
    
    lst = inputlst()

    memo = [-1]*500
    
    def lis(start) :
        #메모이제이션
        if memo[start] != -1 :
            return memo[start]

        #처음에는 자신도 포함이니 1
        memo[start] = 1 
        #다음 큰수를 찾아서 재귀를 할거야
        for nxt in range(start+1,len(lst)) :
            if lst[start] < lst[nxt] :
                memo[start] = max(memo[start], lis(nxt)+1)
        
        return memo[start]
    
    maxlen = 0 
    for start in range(len(lst)) :
        maxlen = max(maxlen, lis(start))
    
    print(maxlen)

for _ in range(C) :
    exe() 
    

3. Review

스코프의 개념에 대해서 다시 찾아보았다 .

예제를 다 읽고 풀었지만 스스로 하려고 노력해보았다 .

이전에 작성하였던 걸 가져오고있는데 스코프가 뭐더라..

일단 내용은 메모이제이션.... 흠..

profile
꾸준히 성실하게

0개의 댓글