백준 14246번 : K보다 큰 구간

상은·2022년 2월 19일
0

백준문제

목록 보기
3/12

14246번 문제

import sys
input = sys.stdin.readline

n = int(input())
num = list(map(int,input().split()))
k = int(input())

new_num = []

cnt = 0  # 쌍의 개수를 셀 변수
temp = 0 # 리스트에 합 저장할 변수

for i in num:
    temp += i
    new_num.append(temp)

for i in range(n-1,-1,-1):
    j = 0
    if new_num[i] > k:
        cnt += 1
    while new_num[i]-new_num[j] > k:
        cnt += 1
        j += 1
print(cnt)

temp에 0~N-1 인덱스까지 순차적으로 값을 더하고, 그 값들을 각각 new_num에 저장해준다.

new_num은 그러면 5개의 숫자가 주어졌을 때
인덱스 번호 0 까지의 합, 0~1까지의합 ,0~2까지의 합, 0~3까지의 합 ,0~4 까지의 합이 저장되어있다.

마지막 for문에서 K보다 큰 구간의 횟수를 구하기 위해, 먼저 각 순차적인 구간의 합이 K보다 큰 경우 cnt를 증가시켜주었고,
구간별 차이를 이용해 그 인덱스 1~4까지의 합 2~4까지의합 등등의 값을 각각 구해서 K보다 큰 경우만 cnt를 증가시키게 해주었다.

profile
Be the Best

0개의 댓글