파이썬 백준 11441번
실버 3
https://www.acmicpc.net/problem/11441
문제 보기
분류: 누적 합
문제 풀기
주어진 모든 숫자들에 대하여 순차적으로 누적 합을 구하여 새 리스트에 저장을 한다. 예제 입력 1 의 경우 리스트의 index 를 맞추기 위해 0 으로 시작해서 0+10, 0+10+20, 0+10+20+30, ,,, 규칙으로 저장해 나간다.
결과적으로 i ~ j 의 합을 구하기 위해서는 새로이 저장된 리스트의 j 번째 값에서 i - 1 번째 값을 빼주는 형태로 답을 구한다.
코드 보기
import sys
inputdata = sys.stdin.readline
def fnSumList():
sum_to = 0
# sum_ls = [0]
for n in num_ls:
sum_to += n
sum_ls.append(sum_to)
print(sum_ls) # TEST PRINT
def fnSumFromIToJ(i, j):
sumFromIToJ = sum_ls[j] - sum_ls[i - 1]
print(f'sumFromIToJ: {sumFromIToJ}') # TEST PRINT
# print(sumFromIToJ)
if __name__ == "__main__":
n = int(inputdata().strip())
num_ls = list(map(int, inputdata().split()))
sum_ls = [0]
fnSumList()
m = int(inputdata().strip())
for _ in range(m):
i, j = map(int, inputdata().split())
fnSumFromIToJ(i, j)
# 5
# 10 20 30 40 50
# 5
# 1 3
# 2 4
# 3 5
# 1 5
# 4 4
# [0, 10, 30, 60, 100, 150]
# sumFromIToJ: 60
# sumFromIToJ: 90
# sumFromIToJ: 120
# sumFromIToJ: 150
# sumFromIToJ: 40
'공부하기 > 백준' 카테고리의 다른 글
[Python] 백준 풀기 1100 - 하얀 칸 (0) | 2023.01.04 |
---|---|
[Python] 백준 풀기 2822 - 점수 계산 (0) | 2023.01.03 |
[Python] 백준 풀기 1431 - 시리얼 번호 (0) | 2023.01.01 |
[Python] 백준 풀기 11728 - 배열 합치기 (0) | 2022.12.31 |
[Python] 백준 풀기 11655 - ROT13 (0) | 2022.12.30 |