❓문제
삼각수 Tn(n ≥ 1)는 [그림]에서와 같이 기하학적으로 일정한 모양의 규칙을 갖는 점들의 모음으로 표현될 수 있다.
[그림]
자연수 n에 대해 n ≥ 1의 삼각수 Tn는 명백한 공식이 있다.
Tn = 1 + 2 + 3 + ... + n = n(n+1)/2
1796년, 가우스는 모든 자연수가 최대 3개의 삼각수의 합으로 표현될 수 있다고 증명하였다. 예를 들어,
- 4 = T1 + T2
- 5 = T1 + T1 + T2
- 6 = T2 + T2 or 6 = T3
- 10 = T1 + T2 + T3 or 10 = T4
이 결과는 증명을 기념하기 위해 그의 다이어리에 “Eureka! num = Δ + Δ + Δ” 라고 적은것에서 유레카 이론으로 알려졌다. 꿍은 몇몇 자연수가 정확히 3개의 삼각수의 합으로 표현될 수 있는지 궁금해졌다. 위의 예시에서, 5와 10은 정확히 3개의 삼각수의 합으로 표현될 수 있지만 4와 6은 그렇지 않다.
자연수가 주어졌을 때, 그 정수가 정확히 3개의 삼각수의 합으로 표현될 수 있는지 없는지를 판단해주는 프로그램을 만들어라. 단, 3개의 삼각수가 모두 달라야 할 필요는 없다.
🔠 입력
프로그램은 표준입력을 사용한다. 테스트케이스의 개수는 입력의 첫 번째 줄에 주어진다. 각 테스트케이스는 한 줄에 자연수 K (3 ≤ K ≤ 1,000)가 하나씩 포함되어있는 T개의 라인으로 구성되어있다.
🖨️출력
프로그램은 표준출력을 사용한다. 각 테스트케이스에대해 정확히 한 라인을 출력한다. 만약 K가 정확히 3개의 삼각수의 합으로 표현될수 있다면 1을, 그렇지 않다면 0을 출력한다.
✍️ 예제 입력
3
10
20
1000
✔️ 예제 출력
1
0
1
💡해설
자연수 합이 1000을 넘지 않으므로 n*(n+1)/2 = 1000이 되는 만큼의 삼각수를 구하면 된다. n = 45
삼각수를 구해서 배열에 넣어둔 다음 for문을 이용해서 입력한 값이 합이 되는 삼각수를 만나면 1을 리턴하고 아니면 0을 리턴하면 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.PriorityQueue;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] triNum = new int[45];
for(int i = 1; i < 45; i++) {
triNum[i] = i * (i + 1) / 2;
}
for(int i = 0; i < N; i++) {
int n = Integer.parseInt(br.readLine());
int result = eureka(n, triNum);
System.out.println(result);
}
}
public static int eureka(int N, int[] triNum) {
for(int j = 1; j < 45; j++) {
for (int k = 1; k < 45; k++) {
for (int z = 1; z < 45; z++) {
int sum = triNum[j] + triNum[k] + triNum[z];
if (sum == N) {
return 1;
}
}
}
}
return 0;
}
}
'알고리즘' 카테고리의 다른 글
백준 2309번 일곱 난쟁이 자바 풀이 (0) | 2022.03.03 |
---|---|
백준 2075번 N번째 큰 수 자바 풀이 (0) | 2022.02.15 |
백준 3040번 백설공주와 일곱 난쟁이 자바 풀이 (0) | 2022.01.23 |
백준 2075번 N번째 큰 수 자바 (0) | 2022.01.16 |
백준 1935번 후위표기식2 자바 풀이 (0) | 2022.01.16 |