[백준/파이썬] 11441번 풀이

업데이트:



문제 정보


풀이

문제

N개의 수 A1, A2, …, AN이 입력으로 주어진다. 총 M개의 구간 i, j가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오.

입력 요약
첫째 줄에 수의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄에는 A1, A2, …, AN이 주어진다. (-1,000 ≤ Ai ≤ 1,000) 셋째 줄에는 구간의 개수 M이 주어진다. (1 ≤ M ≤ 100,000) 넷째 줄부터 M개의 줄에는 각 구간을 나타내는 i와 j가 주어진다. (1 ≤ i ≤ j ≤ N)

출력 요약
총 M개의 줄에 걸쳐 입력으로 주어진 구간의 합을 출력한다.

코드

import sys;read=sys.stdin.readline
n=int(read())
l=[0]+list(map(int,read().split()))
for i in range(n):l[i+1]+=l[i]
s=[]
for T in range(int(read())):
    i,j=map(int,read().split())
    s.append(l[j]-l[i-1])
print('\n'.join(map(str,s)))

설명

핵심은 구현 관점에서 N개의 수 A1, A2, …, AN이 입력으로 주어진다. 총 M개의 구간 i, j가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오.를 만족하도록 로직을 구성하는 것입니다.

코드는 입력을 파싱한 뒤 조건 분기와 계산을 순서대로 수행하고, 문제에서 요구한 형식으로 결과를 출력합니다.

경계값과 예외 케이스도 함께 고려해 오답이 나기 쉬운 상황을 방지합니다.



이런 주제는 어떠신가요?

비슷한 난이도와 유형의 문제를 이어서 보면 풀이 감각을 더 빠르게 잡기 좋습니다.

댓글남기기