반응형
<코드>
#include<iostream>
#include<algorithm>
using namespace std;
int x, N, M, ans, sum;
int prefix_sum[10001];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int s, e, mid;
cin >> N >> M;
for (int i = 1; i <= N; i++)
{
cin >> x;
sum += x;
prefix_sum[i] = sum;
}
for (int i = 0; i <= N; i++)
{
s = i;
e = N;
while (s <= e)
{
mid = (s + e) / 2;
if (M > prefix_sum[mid] - prefix_sum[i])
{
s = mid + 1;
}
else if (M < prefix_sum[mid] - prefix_sum[i])
{
e = mid - 1;
}
else
{
ans++;
break;
}
}
}
cout << ans;
}
풀이 방법
시간 제한이 0.5초이고 N의 값이 최대 1만이기 때문에 이분탐색을 이용하여 NlogN의 시간복잡도로 풀이하였음.
2003번: 수들의 합 2
첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다.
www.acmicpc.net
반응형
'🧩PS > 🥈Nomal' 카테고리의 다른 글
[Python] 백준 1914번 - 하노이 탑 (0) | 2021.01.25 |
---|---|
[C/C++] 백준 1699번 - 제곱수의 합 (0) | 2021.01.25 |
[C/C++] 백준 1173번 - 운동 (0) | 2021.01.21 |
[C/C++] 백준 16564번 - 히오스 프로게이머 (0) | 2021.01.21 |
[C/C++] 백준 9465번 - 스티커 (0) | 2021.01.19 |