반응형
https://www.acmicpc.net/problem/2003
누적합 이후 brute force로 답을 찾는 문제였습니다.
풀이방법
연속된 수의 합들이 m이되는 것들의 개수를 구하면 되므로 누적합을 먼저 구해줘야합니다.
1. 1부터 시작해 누적되어 i까지의 합을 구한 값을 sum이라는 배열의 i번째에 저장합니다.
2. sum[j] - sum[i] == m인 개수를 세준 후 출력합니다.
Code
#include <bits/stdc++.h>
using namespace std;
int n, m, ans;
int a[10001], sum[10001];
int main(){
cin >> n >> m;
for(int i = 1; i <= n; i++){
cin >> a[i];
sum[i] = sum[i-1] + a[i];
}
for(int i = 0; i <= n; i++){
for(int j = i + 1; j <= n; j++){
if(sum[j] - sum[i] == m) ans++;
}
}
cout << ans << '\n';
}
'Algorithm > Brute Force' 카테고리의 다른 글
(C++) - 백준(BOJ) 1446번 : 지름길 (2) | 2021.07.28 |
---|---|
(C++) - 백준(BOJ) 21735번 : 눈덩이 굴리기 (0) | 2021.07.25 |
(C++) - 백준(BOJ) 1759번 : 암호 만들기 (0) | 2021.07.05 |
(C++) - 백준(BOJ) 1039번 : 교환 (0) | 2021.07.05 |
(C++) - 프로그래머스(2020 KAKAO BLIND RECRUITMENT) : 외벽 점검 (0) | 2021.07.04 |