dh0450   2년 전

테스트 몇개 해보니까

    1, 2, 3, 4 ... Len(LIS)

이렇게 나오는데 왜그런지 모르겠네요.

dinky24   2년 전

제 생각이지만, LIS 업데이트에서 O(n),
그리고 DFS에서 최선의 경우 O(n), 최악의 경우 O(n2)일 것 같습니다.
작성자님은 어떻게 테스트하셨는지 여쭤볼 수 있을까요?

dh0450   2년 전

@dinky24 

DP 에 값이 얼마가 캐시되었는지 기준으로 확인해봤습니다.

그냥 숫자 아무거나 넣어봤는데 갯수가, DP(Len(LIS)-1) = 1, DP(Len(LIS)-2) = 2, ... DP(0) = Len(LIS) 더라구요 => O(Len(LIS)^2)

그런데  

  • 7
    10 2 20 2 1 40 20

요런경우는 Len(LIS) = 3 인데 DP(2) = 1, DP(1) = 2, DP(0) = 4  이렇게 나옵니다.


그냥  O(N^2) 으로 쌩으로 DP 돌리는거 보단 괜찮을거같기도 하고 DFS 잘못되면 아닌거같기도 하고... 

참어렵네요.

 

dh0450   2년 전

@dinky24

그리고 LIS 만드는데 O(nLogN) 이지 않나요? 


https://math.stackexchange.com...

dinky24   2년 전

@dh0450

아 맞네요. 제가 생각이 짧았습니다.. ㅎㅎ.

그리고 쌩으로 돌리는 것보다 일반적으로 더 빠르다고 볼 수 있을 것 같습니다.

작성자님의 풀이 잘 봤습니다. 감사합니다.

댓글을 작성하려면 로그인해야 합니다.