
이 문제는 전 문제에 비해 쉽게 풀릴것 같다. 그렇다면 한번 문제를 봐보자. 첫째줄엔 재료의 개수(N), 둘째줄엔 만들 수 있는 재료의 수(M) 그 다음줄엔 N개의 재료들이 가진 번호들을 가진 재료들이다. 그렇다면 N개의 재료들이 가진 번호들이 M과 같아진다면 제작을 할 수 있다는 것을 알 수 있는데. 한번 이 것을 가지고 알고리즘을 제작해보자.
알고리즘
- N개의 재료들의 합이 M이 되면 +1
- 만약 안되면 계속 넘기기
이 간단한 알고리즘을 가지고 제작을 할 수 있는데. cpp이라 그런지 간단해 보이지만, 어렵게 보이는건 함정
#include<iostream>
#include<vector>
#include<string>
#include<map>
#include<algorithm>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int a, armorMake, result = 0;
cin >> a;
vector<int> arr(a);
cin >> armorMake;
for (int i = 0; i < a; i++) {
cin >> arr[i];
}
for (int i = 0; i < a; i++) {
for (int j = i + 1; j < a; j++) {
// i번째와 j번째를 더하면서 만들 수 있는지 확인
int sum = arr[i] + arr[j];
if (sum == armorMake) {
result++;
continue;
}
}
}
cout << result;
}