2018. 1. 7. 13:38, 알고리즘/BOJ
https://www.acmicpc.net/problem/1806
각 시작점에 대해, 어디까지 더하면 합이 S를 넘는지 O(lgN)만에 구할 수 있으면 시간복잡도 O(NlgN)으로 문제 해결이 가능합니다.
이를 위해서 D[i] = num[1]+num[2]...+num[i]로 정의를 했고 D[i]는 increasing임이 보장되므로 이진탐색을 통해 각 st_idx에 대해 D[i] >= S + D[st_idx-1]을 만족하는 i를 O(lgN)으로 찾았습니다.
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ] 2098번: 외판원 순회 (0) | 2018.01.07 |
---|---|
[BOJ] 9935번: 문자열 폭발 (0) | 2018.01.07 |
[BOJ] 1015번: 수열 정렬 (0) | 2018.01.07 |
[BOJ] 1890번: 점프 (0) | 2018.01.07 |
[BOJ] 2240번: 자두나무 (0) | 2018.01.07 |
[BOJ] 1495번: 기타리스트 (0) | 2018.01.07 |
Comments