10448번: 유레카 이론
프로그램은 표준입력을 사용한다. 테스트케이스의 개수는 입력의 첫 번째 줄에 주어진다. 각 테스트케이스는 한 줄에 자연수 K (3 ≤ K ≤ 1,000)가 하나씩 포함되어있는 T개의 라인으로 구성되어
www.acmicpc.net
브루투포스 문제 입니다. 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;
}
}