[백준 5676] 음주코딩 #165
ghdcksgml1
started this conversation in
1일 1알고리즘
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
아이디어
대표적인 세그먼트 트리를 사용하는 문제이다. 세그먼트 트리는 구간의 합을 O(logN)만에 구할 수 있는 엄청난 알고리즘이다.
누적합을 쓰면 O(2) 만에 구할 수 있는데 왜 굳이 세그먼트 트리를 쓰냐고 생각을 할 수 있겠지만, 세그먼트 트리는 구간의 값을 업데이트를 하는데에도
O(logN)의 시간 복잡도를 가지기 때문에 세그먼트 트리를 쓴다.
예를 들어, 누적합의 한 부분이 변경이 된다면, O(N) 만큼의 시간복잡도가 걸린다. 앞에서부터 한 부분까지의 값을 업데이트 시켜야하기 때문이다.
만약 구간합과 한 부분을 업데이트하는 쿼리가 K개 주어질경우
누적합의 시간복잡도는 O(NK), 세그먼트 트리의 시간복잡도는 O(KlogN) 가 걸리게된다.
시간복잡도
O(T*KlogN) T는 테스트케이스
소스코드
Beta Was this translation helpful? Give feedback.
All reactions