Si = Sigma(Aj) (j<=i)라고 정의합시다.
1. S 배열을 어떻게 하면 O(n)에 만들까?
2. S 배열을 통해 어떻게 질문당 O(1)에 답을 낼까?
이 문제들을 해결하면 풀수 있습니다.
11441번 - 합 구하기
음수일 경우와 양수일 경우를 따로 구분하지 않으셔도 됩니다.
1~n까지의 합을 sum[n]에 저장한다고 가정해 봅시다.
특정 구간의 합을 계산 하고 싶을시 sum배열을 이용하여
종료지점까지의 구간합에서 시작지점까지의 구간합을 빼주면 됩니다.
예를 들어보면 입력으로 2 -5 4 2 -10 총 5개의 원소가 들어왔을때
합배열은 2 -3 1 3 -7이 나오게 됩니다.
구간 3~5의 합을 구하고 싶으면 합배열 5번째 원소에서(3~5까지의 합)
합배열의 2번째원소(1~2까지의 합)을 빼주면 됩니다.
sum[5]-sum[2] = -7 - (-3) = -4로나오게 되며 검산을 해보아도 결과는 같습니다.
댓글을 작성하려면 로그인해야 합니다.
khj878 8년 전
최악의 경우N이 100000개 경우에 M개(최악 100000개) 의 구간합을
최대범위(1~100000)번 을 구해서 TL이 나는거 같은데 (최악의 경우 O(n^2) = 백억..? )
이 문제 어떻게 해결해야 될까요?ㅠㅠ