백준 - JAVA

10448번 : 유레카 이론

uhyvn 2023. 8. 16. 16:33

https://www.acmicpc.net/problem/10448

 

 

10448번: 유레카 이론

프로그램은 표준입력을 사용한다. 테스트케이스의 개수는 입력의 첫 번째 줄에 주어진다. 각 테스트케이스는 한 줄에 자연수 K (3 ≤ K ≤ 1,000)가 하나씩 포함되어있는 T개의 라인으로 구성되어

www.acmicpc.net

 

 


 

 

- 문제

 

 

- 예제

 

 


 

 

- 코드

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class p10448 {

    static int[] arr; // 삼각수 값 저장할 배열 생성

    public static void main(String[] args) throws IOException {
    
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        int t = Integer.parseInt(br.readLine()); // 테스트케이스 개수
        arr = new int[45]; // k의 최댓값이 1000이므로, 삼각수 t45 이상은 불필요함

        for (int i = 1; i <= 44; i++) { // 삼각수 값 배열에 저장
            arr[i] = i * (i + 1) / 2;
        }

        for (int i = 0; i < t; i++) {
            int k = Integer.parseInt(br.readLine());
            
            int result = check(k); // 입력받은 k가 3개의 삼각수의 합으로 표현되는지 확인
            System.out.println(result); // 리턴값 출력
        }
    }

    public static int check(int k) {
    
        for (int i = 1; i <= 44; i++) {
            for (int j = 1; j <= 44; j++) {
                for (int l = 1; l <= 44; l++) { // 모든 경우의 수 알아보기
                
                    if (arr[i] + arr[j] + arr[l] == k) { // 3개의 삼각수의 합으로 표현된다면, 1 리턴
                        return 1;
                    }
                    
                }
            }
        }
        
        return 0; // 모든 경우의 수를 돌아도 표현되지 않는다면, 0 리턴
    }
}

'백준 - JAVA' 카테고리의 다른 글

3085번 : 사탕 게임  (2) 2023.08.21
2503번 : 숫자 야구  (0) 2023.08.17
2231번 : 분해합  (0) 2023.08.16
15649번 : N과 M (1)  (0) 2023.08.10
5568번 - 카드 놓기  (0) 2023.08.09