heyksw0208   2년 전

입력을 받을때마다 배열에서 이진탐색을 해서 적절한 위치에 삽입을 해줬습니다.

1. 시간복잡도는 대략 log1 + log2 + log3 + log4 + ... + logN = log N! 이 된다고 생각하는데 맞을까요?

2. 리스트 중간에 insert(idx+1, value) 해주는 것보다 arr = arr[:idx] + [value] + arr[idx:] 가 빠르다고 생각하는데 맞을까요?

만약 제가 O(log N!) 의 알고리즘을 제대로 짠게 맞다면 시간초과가 나지 않았겠죠 ㅠ 도움 부탁드립니다..

lambda   2년 전

35,38번째줄에서  temparr 전체를 복사하기 때문에 느립니다. list.insert를 써도 크게 달라지지는 않을 것 입니다. 둘 다 O(n)이고 복사하는 것을 n번 반복하기 때문에 전체 시간 복잡도는 O(logn!)=O(nlogn) 보다는 O(n**2)에 가깝습니다.

리스트가 아닌 다른 자료구조를 이용해 보세요.

heyksw0208   2년 전

@lambda

저번에도 도움 주셨던 분이군요..!

덕분에 공부됐습니다. 감사합니다.

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