본문 바로가기
알고리즘 문제 풀이/완전탐색

백준 - 유레카 이론

by 가나무마 2021. 12. 22.
728x90

본 알고리즘 풀이는 Routine Study에서 진행하고 있습니다.
저를 포함한 구성원이 대부분 초보이므로, 원하시는분은 언제라도 들어오셔도 좋습니다.

문의는 댓글 바람.

문제 출처 : https://www.acmicpc.net/problem/10448

 

[문제 설명]

Tn이 1부터 n까지의 등차수열의 합이고, A가 주어졌을 때 A = Ta + Tb + Tc이면 1을 출력 아니면 0을 출력하라.

[접근 방법]

완전탐색으로 모든 경우의 수를 조회해보기

 

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

class Main {
    static int N;
    static int[] providedNumbers;
    static int[] triangleNums = new int[1001];
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        N = Integer.parseInt(br.readLine());
        providedNumbers = new int[N];
        for (int i = 0; i < N; i++) providedNumbers[i] = Integer.parseInt(br.readLine());
        for (int i = 1; i < triangleNums.length; i++) triangleNums[i] = ((i)*(i+1))/2;

        for (int providedNumber : providedNumbers) {
            boolean isAnswerd = false;
            for (int i = 1; i < triangleNums.length; i++) {
                if (triangleNums[i] > providedNumber) break;
                for (int j = 1; j < triangleNums.length; j++) {
                    if (triangleNums[i] > providedNumber - triangleNums[j]) break;
                    for (int k = 1; k < triangleNums.length; k++) {
                        if (triangleNums[i] == providedNumber - triangleNums[j] - triangleNums[k]) {
                            System.out.println(1);
                            isAnswerd = true;
                            break;
                        }
                    }
                    if (isAnswerd) break;
                }
                if (isAnswerd) break;
            }
            if (!isAnswerd) System.out.println(0);
        }
    }
}
728x90
반응형

'알고리즘 문제 풀이 > 완전탐색' 카테고리의 다른 글

백준 - 영화감독 숌  (0) 2021.12.25
백준 - 체스판 다시 칠하기  (0) 2021.12.25
백준 - 암호 만들기  (0) 2021.12.12
백준 - 한수  (0) 2021.12.12
프로그래머스 - 소수 만들기  (0) 2021.11.25