브루투포스 문제 입니다. 3개의 숫자 합의 범위가 1000까지 이므로 먼저 50개의 숫자를 구해놓고, 3중 for문으로 돌면서 검색해도 시간 초과가 나지 않았습니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class 유레카이론 {
static int n;
static ArrayList<Integer> arrayList;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
arrayList = new ArrayList<>();
arrayList.add(1);
arrayList.add(3);
arrayList.add(6);
arrayList.add(10);
int sum = 5;
for(int i = 4; i < 50; i++) {
arrayList.add(arrayList.get(i - 1) + sum);
sum ++;
}
for (int i = 0; i < n; i++) {
int input = Integer.parseInt(br.readLine());
boolean result = isEurekaNumber(input);
if (result) {
System.out.println(1);
} else {
System.out.println(0);
}
}
}
private static boolean isEurekaNumber(int input) {
for (int i = 0; i < 44; i++) {
for (int j = 0; j < 44; j++) {
for (int p = 0; p < 44; p++) {
if (arrayList.get(i) + arrayList.get(j) + arrayList.get(p) == input) {
return true;
}
}
}
}
return false;
}
}