728x90
반응형
1. 문제 설명
2. 풀이과정
문제에서 수의 개수와 합을 구해야 하는 횟수는 최대 100,000이다.
게다가 구간마다 합을 매번 계산하면 0.5초 안에 모든 구간 합 계산을 끝낼 수 없다.
하여 구간 합을 이용해 문제를 해결한다.
- N개의 수를 입력받음과 동시에 합 배열을 생성한다. S[i] = S[i - 1] + A[i]
- 구간 i ~ j가 주어지면 구간 합을 구하는 공식으로 정답을 출력한다. S[j] - S[i - 1]
슈도코드
- N(숫자 개수), M(질의 개수)
- numbers 변수에 숫자 데이터 저장
- perfix_sum 합 배열 변수 선언
- for 저장한 숫자 데이터 차례대로 탐색 : 합 배열에서 이전 값에 현재 숫자 데이터 더해 값 저장
- for 질의 개수만큼 반복
- 질의 범위 받기 (start ~ end)
- 구간 합 출력하기 (perfix_sum[end] - perfix_sum[start - 1])
반응형
3. 소스코드
import sys
N, M = map(int, sys.stdin.readline().split())
numbers = list(map(int, sys.stdin.readline().split()))
perfix_sum = [0] * (N + 1)
for i in range(1, N + 1):
perfix_sum[i] = perfix_sum[i - 1] + numbers[i - 1]
for i in range(M):
start, end = map(int, sys.stdin.readline().split())
print(perfix_sum[end] - perfix_sum[start - 1])
728x90
반응형
'알고리즘 코딩테스트' 카테고리의 다른 글
[백준] 12891번 : DNA 비밀번호 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.01.10 |
---|---|
[백준] 1253번 : 좋다 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.01.09 |
[백준] 1940번 : 주몽 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.01.08 |
[백준] 2018번 : 수들의 합 5 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.01.08 |
[백준] 10986번 : 나머지 합 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.01.07 |
[백준] 11660번 : 구간 합 구하기 5 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.01.04 |
[백준] 1546번 : 평균 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.01.04 |
[백준] 11720 : 숫자의 합 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.01.03 |