굥뷰를 햡시댜

[BOJ-1940] 주몽 본문

알고리즘 문제 풀이/BOJ 문제 풀이

[BOJ-1940] 주몽

GodZ 2019. 9. 18. 18:36

https://www.acmicpc.net/problem/1940

 

1940번: 주몽

첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 숫자 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고유한 번호들이 공백을 사이에 두고 주어진다. 고유한 번호는 100,000보다 작거나 같은 자연수이다.

www.acmicpc.net

 

 

음... dfs를 이용해 조합으로 풀었다.

 

히든 케이스가 상당히 빈약한듯 하다

 

다른 방법이 정해일 것 같은데 한 번에 통과해서 놀랐다.

 

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>

using namespace std;

int n, m, res;
vector<int> vec, sel;

void dfs(int n) {
	if (sel.size() == 2) {
		if (sel[0] + sel[1] == m) {
			res += 1;
		}
		return;
	}

	for (int i = n; i < vec.size(); i++) {
		sel.push_back(vec[i]);
		dfs(i + 1);
		sel.pop_back();
	}
}


int main(void) {

	scanf("%d", &n);
	scanf("%d", &m);

	for (int i = 0, temp; i < n; i++) {
		scanf("%d", temp);
		vec.push_back(temp);
	}

	dfs(0);

	printf("%d\n", res);

	getchar();
	getchar();

	return 0;
}

'알고리즘 문제 풀이 > BOJ 문제 풀이' 카테고리의 다른 글

[BOJ - 2234] 성곽  (0) 2019.09.30
[BOJ - 17472] 다리 만들기2  (0) 2019.09.30
[BOJ - 16637] 괄호 추가하기  (0) 2019.08.23
[BOJ - 17406] 배열 돌리기 4  (0) 2019.08.17
[BOJ-17281] 야구  (0) 2019.08.16
Comments