Algorithm/문제풀이

[C++] 백준 알고리즘 10448 유레카 이론 (브루트 포스)

사과당근 2021. 9. 27. 02:17

브루트 포스란 무엇인가?

모든 경우의 수를 다 해보는 것이다.

이런 단순한 방법이 때로는 가장 합리적인 방법일 수도 있다.

 

#include<iostream>
#include<vector>

using namespace std;

vector<int> num;
//삼각수를 벡터에 push_back
void calc() {
	int sum = 0;
	int k = 1;
	while (sum < 1000) {
		sum += k;
		num.push_back(sum);
		k++;
	}
}

//세 삼각수의 합이 입력한 수이면 true 리턴
bool check(int n) {
	bool c = false;
	for (int i = 0; i < num.size(); i++) {
		for (int j = 0; j < num.size(); j++) {
			for (int k = 0; k < num.size(); k++) {
				if (num[i] + num[j] + num[k] == n)
				{
					c = true;
					break;
				}
			}
		}
	}
	return c;
}

int main() {
	int n;
	cin >> n;

	calc();

	while (n--) {
		int t;
		cin >> t;
		if (check(t))
			cout << 1 << '\n';
		else
			cout << 0 << '\n';
	}

}