티스토리 뷰
반응형
구간 합 구하기 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
- 일본어문법무작정따라하기
- 데이터분석
- 류근관
- 백준
- 심리학
- K-MOOC
- 일문따
- 일본어
- 통계
- jlpt
- 뇌와행동의기초
- 코딩테스트
- C/C++
- 인프런
- EBS
- stl
- 파이썬
- 윤성우
- 사회심리학
- 회계
- 통계학
- Python
- 오블완
- 열혈프로그래밍
- c++
- 보세사
- 여인권
- 인지부조화
- 티스토리챌린지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함
반응형