본문 바로가기

Algorithm/Brute Force

(C++) - 백준(BOJ) 10448번 : 유레카 이론

반응형

www.acmicpc.net/problem/10448

 

10448번: 유레카 이론

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

www.acmicpc.net

brute force로 푼 문제였습니다.

 

 

풀이방법

 1. 누적합을 1000까지 구해줍니다. 

 2. 누적합이 1000을 넘는 구간은 45번째 수부터이므로 3개 수들 합이 찾으려는 수와 같은지 3개의 for문을 이용해 찾아줍니다.

 

Code

#include <bits/stdc++.h>
#define ll long long
using namespace std;
int triangleNum[1001];
int t;

bool ck(int num){
    for(int i = 1; i <=50; i++)
        for(int j = 1; j <=50; j++)
            for(int k = 1; k <= 50; k++)
                if(triangleNum[i] + triangleNum[j] + triangleNum[k] == num)
                    return true;            
    return false;
}

int main(){
    for(int i = 1; i <= 1000; i++) triangleNum[i] = triangleNum[i-1] + i;

    cin >> t;
    while(t--){
        int num;
        cin >> num;
        cout << ck(num) <<'\n';
    }
}