문제 링크입니다: https://www.acmicpc.net/problem/11969
각각의 소에 대해 부분합을 구하여 각 쿼리에 대한 답을 적절히 출력하면 되는 문제였습니다.
#include <iostream>
using namespace std;
const int MAX = 100000 + 1;
int H[MAX], G[MAX], J[MAX];
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int N, Q;
cin >> N >> Q;
//부분합 구한다
for (int i = 1; i <= N; i++)
{
int num;
cin >> num;
H[i] = H[i - 1];
G[i] = G[i - 1];
J[i] = J[i - 1];
switch (num)
{
case 1:
H[i]++;
break;
case 2:
G[i]++;
break;
case 3:
J[i]++;
break;
}
}
for (int i = 0; i < Q; i++)
{
int a, b;
cin >> a >> b;
cout << H[b] - H[a - 1] << " ";
cout << G[b] - G[a - 1] << " ";
cout << J[b] - J[a - 1] << "\n";
}
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 10986번 나머지 합 (0) | 2019.02.08 |
---|---|
백준 10211번 Maximum Subarray (0) | 2019.02.08 |
백준 11660번 구간 합 구하기 5 (2) | 2019.02.07 |
백준 11659번 구간 합 구하기 4, 백준 11441번 합 구하기 (0) | 2019.02.07 |
백준 3109번 빵집 (0) | 2019.02.07 |