본문 바로가기
알고리즘

[BOJ-1940] C++ 주몽 / 실버4

by 돌맹96 2024. 12. 11.
728x90
반응형

1940번: 주몽

문제는 간단하다.

배열에서 두개를 뽑아서 M과 같은것을 카운트하는 방식이다.

나는 조합을 이용해서 재귀로 문제를 해결하였다.

 

Code

#include <iostream>
#include <map>
#include <algorithm>
#include <climits>
#include <string>
#include <vector>
using namespace std;

int n, m;
int k = 2;
int cnt;
vector<int> temp_;
void result(vector<int> &arr)
{
	int sum = 0;
	for (int i : arr)
	{
		sum += temp_[i];
	}

	if (sum == m)
	{
		cnt++;
	}
}

void solve(int start, vector<int>& arr)
{
	if (arr.size() == k)
	{
		result(arr);
		return;
	}
	for (int i = start + 1; i < n; i++)
	{
		arr.push_back(i);
		solve(i, arr);
		arr.pop_back();
	}
	return;
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cin >> n >> m;
	vector<int> arr;

	
	for (int i = 0; i < n; i++)
	{
		int temp;
		cin >> temp; temp_.push_back(temp);
	}
	solve(-1, arr);
	cout << cnt << "\n";
	return 0;
}
728x90
반응형