Skip to content

Commit

Permalink
BOJ-EX: 6/20/2024, 3:19:15 AM
Browse files Browse the repository at this point in the history
  • Loading branch information
fkdl0048 committed Jun 19, 2024
1 parent 51bc6fb commit 082be04
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 0 deletions.
34 changes: 34 additions & 0 deletions 11659번: 구간 합 구하기 4/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# 11659번: 구간 합 구하기 4 - <img src="https://static.solved.ac/tier_small/8.svg" style="height:20px" /> Silver III

<!-- performance -->

<!-- 문제 제출 후 깃허브에 푸시를 했을 때 제출한 코드의 성능이 입력될 공간입니다.-->

<!-- end -->

## 문제

[문제 링크](https://boj.kr/11659)


<p>수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오.</p>



## 입력


<p>첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다.&nbsp;셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다.</p>



## 출력


<p>총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다.</p>



## 소스코드

[소스코드 보기](구간%20합%20구하기%204.cpp)
47 changes: 47 additions & 0 deletions 11659번: 구간 합 구하기 4/구간 합 구하기 4.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/* ************************************************************************** */
/* */
/* ::: ::: ::: */
/* Problem Number: 11659 :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: fkdl4878 <boj.kr/u/fkdl4878> +#+ +#+ +#+ */
/* +#+ +#+ +#+ */
/* https://boj.kr/11659 #+# #+# #+# */
/* Solved: 2024/06/20 02:59:10 by fkdl4878 ### ### ##.kr */
/* */
/* ************************************************************************** */

// 수 N개가 주어졌을 때, i~j까지의 합을 구하는 프로그램
// 투 포인터 문제이다.
// 개수 N과 합을 구해야 하는 횟수 M이 주어진다.
// 이후 M개의 줄에는 합을 구해야 하는 구간 i, j가 주어짐

// ps1
// 투 포인터 기법으로 고고

#include <iostream>
#include <vector>
using namespace std;

int main() {
ios_base::sync_with_stdio(false); // 입출력 속도 향상을 위한 코드
cin.tie(NULL); // 입출력 속도 향상을 위한 코드

int N, M;
cin >> N >> M; // N: 배열의 크기, M: 합을 구해야 하는 구간의 개수

vector<int> arr(N + 1, 0); // 배열 선언 및 초기화
vector<int> prefix_sum(N + 1, 0); // 누적 합 배열 선언 및 초기화

// 배열 입력
for (int i = 1; i <= N; ++i) {
cin >> arr[i];
prefix_sum[i] = prefix_sum[i - 1] + arr[i]; // 누적 합 계산
}

// 구간 합 구하기
for (int i = 0; i < M; ++i) {
int start, end;
cin >> start >> end; // 구간의 시작과 끝 입력
cout << prefix_sum[end] - prefix_sum[start - 1] << '\n'; // 구간 합 출력
}
}
Binary file not shown.

0 comments on commit 082be04

Please sign in to comment.