본문 바로가기

알고리즘 문제

[알고리즘 문제/C++]백준 10448번 : 유레카 이론

문제 링크: https://www.acmicpc.net/problem/10448

 

10448번: 유레카 이론

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

www.acmicpc.net

 

브루트포스(완전탐색)으로 풀었습니다. 코드입니다.

#include<iostream>
using namespace std;

int Tnum(int n)
{
    return (n * n + n)/2;
}

int check(int count, int arr_num)
{
    for(int a = 1; a <= count; a++)
    {
        for(int b = 1; b <= count; b++)
        {
            for(int c = 1; c <= count; c++)
            {
                if(arr_num==(Tnum(a)+Tnum(b)+Tnum(c)))
                {
                    return 1;
                }
            }
        }
    }
    return 0;
}
int main()
{
    int num;
    cin >> num;
    int *arr = new int[num];
    for(int i = 0; i < num; i++)
        cin >> arr[i];

    for(int i = 0; i < num; i++)
    {
        int val = 0;
        int count = 0;
        while(arr[i] > val)
        {
        count++;
        val=Tnum(count);
        }
        cout << check(count, arr[i]) << endl;
    }

    delete[] arr;

    return 0;
}