- 난이도: 브론즈 2
- 알고리즘: 브루트포스 알고리즘
1000 이하의 삼각수를 모두 구하고, 삼중 반복문으로 세 수를 선택해 더해서 가지 경우 모두를 탐색했다.
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n, x;
cin >> n;
vector<int> tri;
int cc = 1;
while (cc * (cc + 1) / 2 <= 1000) {
tri.push_back(cc * (cc + 1) / 2);
cc++;
}
for (int i = 0; i < n; i++) {
cin >> x;
int r = 0, flag=0;
for (int a = 0; a < tri.size(); a++) {
for (int b = 0; b < tri.size(); b++) {
for (int c = 0; c < tri.size(); c++) {
r = tri[a] + tri[b] + tri[c];
if (r == x) {
flag = 1;
break;
}
}
if (r == x) break;
}
if (r == x) break;
}
if (flag) cout << 1 << "\n";
else cout << 0 << "\n";
}
}