[Silver II] K보다 큰 구간 - 14246
성능 요약
메모리: 123464 KB, 시간: 2812 ms
분류
두 포인터
제출 일자
2026년 04월 25일 22:04:59
문제 설명
$n$개의 자연수로 이루어진 수열이 주어질 때, 특정 구간 $[i,j]$ ($i≤j)$의 합이 $k$보다 큰 모든 쌍 $(i, j)$의 개수를 출력하시오.
입력
첫째 줄에는 자연수의 개수 $n$이 주어진다. ($1≤n≤100\,000$)
다음 줄에는 자연수 $n$개가 주어진다. 자연수는 $100\,000$보다 크지 않다.
그 다음 줄에는 자연수 $k$가 주어진다. ($1≤k≤1\,000\,000\,000$)
출력
특정 구간 $[i,j]$의 합이 $k$보다 큰 모든 쌍 $(i,j)$의 개수를 출력하시오.
💡 해결 방법
💻 코드
import sys
input = sys.stdin.readline
n = int(input())
l = list(map(int, input().split()))
k = int(input())
c = 0
#누적합
l2 = [0]
for i in range(len(l)):
l2.append(l2[-1] + l[i])
for s in range(len(l)):
for e in range(s, len(l)):
if l2[e + 1] - l2[s] > k:
c += len(l) - e
break
print(c)