티스토리 뷰
반응형
구간 합 구하기 4 성공
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 | 256 MB | 56016 | 23972 | 18527 | 41.297% |
문제
수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다.
출력
총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다.
제한
- 1 ≤ N ≤ 100,000
- 1 ≤ M ≤ 100,000
- 1 ≤ i ≤ j ≤ N
예제 입력 1 복사
5 3
5 4 3 2 1
1 3
2 4
5 5
예제 출력 1 복사
12
9
1
#include <iostream>
#include <string>
using namespace std;
int arr[1000001] = { 0 };
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n,m,sum=0,k,l;
cin >> n>>m;
for (int i = 0; i < n; i++)
{
cin >> sum;
arr[i] += arr[i-1]+sum;
}
for (int i = 0; i < m; i++)
{
cin >> k >> l;
printf("%d\n",arr[l-1]-arr[k-2]);
}
return 0;
}
그냥 이중 for문으로 돌리니까 시간 초과가 났다.
인덱스 | 0 | 1 | 2 | 3 | 4 |
배열A | 5 | 4 | 3 | 2 | 1 |
합A | 5 | 9 | 12 | 14 | 15 |
위처럼 구성할 수 있다.
동적계획법과 비슷한 것 같다.
합을 정해두고, 1~3의 합을 계산하면 미리 계산해둔 합 배열에서 인덱스 2번의 것을 추출하면, 그것이 합이 된다.
만약 2~4를 한다면, 4까지의 합이 인덱스 3에 있는 12이고 1까지의 합인 인덱스 0을 빼주면 된다
즉 14-5가 되어서 9를 출력할 수 있다.
반응형
'프로그래밍 > 백준 문제풀이' 카테고리의 다른 글
백준 10986 나머지 합 C/C++ (0) | 2023.01.06 |
---|---|
백준 11660 구간 합 구하기5 C/C++ (0) | 2023.01.05 |
백준 10090 counting inversions C/C++ (0) | 2022.12.16 |
백준 1920 수 찾기 C/C++ (0) | 2022.12.06 |
백준 2740 행렬 곱셈 C/C++ (0) | 2022.11.16 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 코딩테스트
- 일문따
- c++
- 오블완
- 일본어
- stl
- 파이썬
- 백준
- 보세사
- 열혈프로그래밍
- 티스토리챌린지
- 뇌와행동의기초
- 심리학
- 통계학
- 데이터분석
- 윤성우
- 강화학습
- 처벌
- 류근관
- 인지부조화
- 회계
- 조건형성
- C
- Python
- K-MOOC
- 정보처리기사
- 행동심리학
- 통계
- 사회심리학
- 일본어문법무작정따라하기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
글 보관함