문제
https://www.acmicpc.net/problem/10448
풀이과정
처음에는 이걸 어떻게 하지 ? 라는 생각을 했지만 시간제한을 보니 그냥 for문으로 다 검사해도 될 것 같아서 쉽게 해결했다. 비교적 어렵지 않은 완전탐색 문제이다.
소스코드
#include <iostream>
#include <vector>
using namespace std;
int arr_T[50];
void init()
{
for (int i = 1; i <= 50; i++)
{
arr_T[i - 1] = i*(i + 1) / 2;
}
}
bool solution(int num)
{
for (int i = 0; i < 50; i++)
{
for (int j = 0; j < 50; j++)
{
for (int k = 0; k < 50; k++)
{
int sum = arr_T[i] + arr_T[j] + arr_T[k];
if (sum == num)
return true;
}
}
}
return false;
}
int main()
{
ios::sync_with_stdio(false);
int T,K;
cin >> T;
init();
for (int i = 0; i < T; i++)
{
cin >> K;
if (solution(K)) cout << 1 << "\n";
else cout << 0 << "\n";
}
return 0;
}