알고리즘/BOJ

백준 10448번 유레카 이론

꾸준함. 2018. 6. 30. 21:27

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


미리 삼각수를 계산해놓은 뒤에 삼각수 세개를 이용해 만들 수 있는지 판별해주면 되는 문제였습니다.

Brute Force 방식으로 찾기 때문에 구현은 어렵지 않았습니다.


#include <iostream>

#include <vector>

using namespace std;

 

vector<int> eureka;

 

//1000보다 작은 삼각수 미리 계산

void preCalculate(void)

{

        int N = 1;

 

        while ((N)*(N + 1) / 2 < 1000)

        {

                 eureka.push_back(N*(N + 1) / 2);

                 N++;

        }

}

 

//삼각수 세개로 만들 수 있는 숫자인지 판별

bool triangleSum(int total)

{

        for (int i = 0; i < eureka.size(); i++)

                 for (int j = 0; j < eureka.size(); j++)

                         for (int k = 0; k < eureka.size(); k++)

                                 if (eureka[i] + eureka[j] + eureka[k] == total)

                                          return true;

        return false;

}

 

int main(void)

{

        int test_case;

        cin >> test_case;

 

        preCalculate();

 

        for (int i = 0; i < test_case; i++)

        {

                 int total;

                 cin >> total;

 

                 cout << triangleSum(total) << endl;

        }

        return 0;

}


개발환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~


반응형

'알고리즘 > BOJ' 카테고리의 다른 글

백준 2583번 영역 구하기  (2) 2018.07.01
백준 14888번 연산자 끼워넣기  (6) 2018.06.30
백준 11585번 속타는 저녁 메뉴  (0) 2018.06.30
백준 11403번 경로 찾기  (0) 2018.06.30
백준 5585번 거스름돈  (0) 2018.06.30