본문 바로가기
Algorithm & SQL/BAEKJOON

백준 JAVA 10448 유레카 이론

by YoonJong 2022. 8. 28.
728x90

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

 

10448번: 유레카 이론

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

www.acmicpc.net

 

 

package BAEKJOON.Bronze.Ⅰ;

import java.util.Scanner;

/**
 * 시간 제한   메모리 제한 제출 정답 맞힌 사람  정답 비율
 * 1 초 256 MB 11401  6687   5245   57.822%
 */

public class NO10448 {

    // 3중 for 문을 사용해 3개의 숫자를 구할 수 있는지 없는지 확인
    // 시간제한은 1초이지만 배열의 길이가 45로 한정되어 있어 
    // 45 * 45 * 45 를 하더라도 시간이 충분하다.
    static boolean check(int[] arr, int num) {
        for (int i = 1; i < 45; i++) {
            for (int j = 1; j < 45; j++) {
                for (int k = 1; k < 45; k++) {
                    int sum = arr[i] + arr[j] + arr[k];
                    if (sum == num) {
                        return true;
                    }
                }
            }
        }
        return false;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] arr = new int[45];

        // 배열에 먼저 값 담아준다.
        for (int i = 0; i < arr.length; i++) {
            arr[i] = i * (i + 1) / 2;
        }

        int n = sc.nextInt();

        for (int l = 0; l < n; l++) {
            int num = sc.nextInt();
            System.out.println(check(arr, num) ? 1 : 0);
        }
    }
}
728x90

댓글