풀이.
sparse table이라는 자료구조를 이용해야한다.
sparse table은 정적 구간 질의를 처리할 수 있는 자료구조인데 대부분의 구간 질의를 O(log n)시간에 처리하지만 특정한 연산에 대해서는 O(1)의 시간 복잡도를 가지는 특징을 가지고 있다.
sparse table로 구간 질의를 처리하기 위해서는 배열이 정적이어야한다.
해당 문제를 살펴보면 f2(1) = f(f(1)), f4(1) = f2(f2(1))과 같은 구조로 되어있다.
즉 sparse table에는 2의 제곱으로 늘어나는 값들을 저장해서 풀면된다.
아직 확실히 이해가 되지 않아서 다시 풀어보아야 할 것 같다.
소스코드.
'프로그래밍 > 백준' 카테고리의 다른 글
[백준] 1922. 네트워크 연결 - 파이썬 (0) | 2021.10.11 |
---|---|
[백준] 11724. 연결 요소의 개수 - 파이썬 (0) | 2021.10.09 |
[백준] 18352. 특정 거리의 도시 찾기 - 파이썬 (0) | 2021.09.27 |
[백준] 16975. 수열과 쿼리 21 - 파이썬 (0) | 2021.09.25 |
[백준] 1238. 파티 - 파이썬 (0) | 2021.09.24 |