문제
https://www.acmicpc.net/problem/11659
풀이
누적 합을 이용하면 쉽게 풀 수 있다.
i번째까지의 모든 수의 합을 담는 배열을 만든다.
이후 구간 합을 구하면 되는데, 만약 구해야하는 구간이 3부터 5라면,
1번 구간부터 5번 구간까지의 합을 담고 있는 arr[5] 에서 1번 구간부터 2번 구간까지의 합을 담고 있는 arr[2] 의 값을 빼주면 된다.
#include <bits/stdc++.h>
using namespace std;
int arr[100001] = { 0, };
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int N, M;
cin >> N >> M;
for (int i = 1; i <= N; i++) {
cin >> arr[i];
arr[i] = arr[i] + arr[i - 1];
}
while (M--) {
int i, j;
cin >> i >> j;
cout << arr[j] - arr[i - 1] << '\n';
}
}
시간초과가 났었는데, endl 때문.... \n을 써 버릇 하자.
728x90
'백준' 카테고리의 다른 글
[백준Baekjoon]1759: 암호 만들기/C++ (0) | 2024.08.02 |
---|---|
[백준BaekJoon]13305: 주유소/C++ (0) | 2024.07.18 |
[백준BaekJoon]1920: 수 찾기C++ (0) | 2024.07.12 |
[백준BaekJoon]2839: 설탕 배달/C++ (0) | 2024.07.12 |
[백준BaekJoon]14430: 자원 캐기/C++ (0) | 2023.05.10 |
문제
https://www.acmicpc.net/problem/11659
풀이
누적 합을 이용하면 쉽게 풀 수 있다.
i번째까지의 모든 수의 합을 담는 배열을 만든다.
이후 구간 합을 구하면 되는데, 만약 구해야하는 구간이 3부터 5라면,
1번 구간부터 5번 구간까지의 합을 담고 있는 arr[5] 에서 1번 구간부터 2번 구간까지의 합을 담고 있는 arr[2] 의 값을 빼주면 된다.
#include <bits/stdc++.h>
using namespace std;
int arr[100001] = { 0, };
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int N, M;
cin >> N >> M;
for (int i = 1; i <= N; i++) {
cin >> arr[i];
arr[i] = arr[i] + arr[i - 1];
}
while (M--) {
int i, j;
cin >> i >> j;
cout << arr[j] - arr[i - 1] << '\n';
}
}
시간초과가 났었는데, endl 때문.... \n을 써 버릇 하자.
728x90
'백준' 카테고리의 다른 글
[백준Baekjoon]1759: 암호 만들기/C++ (0) | 2024.08.02 |
---|---|
[백준BaekJoon]13305: 주유소/C++ (0) | 2024.07.18 |
[백준BaekJoon]1920: 수 찾기C++ (0) | 2024.07.12 |
[백준BaekJoon]2839: 설탕 배달/C++ (0) | 2024.07.12 |
[백준BaekJoon]14430: 자원 캐기/C++ (0) | 2023.05.10 |