BOJ 10448 : 유레카 이론 - C++

김정욱·2021년 2월 25일
0

Algorithm - 문제

목록 보기
122/249

유레카 이론

코드

#include <iostream>
using namespace std;

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    int T,N;
    cin >> T;
    int board[1002];
    for(int i=1;i<=1000;i++) board[i] = i*(i+1)/2;
    // board[51] > 1000(최대 입력) 이므로 51까지만 해도됨
    while(T--)
    {
        cin >> N;
        for(int i=1;i<=51;i++)
        {
            for(int j=i;j<=51;j++)
            {
                for(int q=j;q<=51;q++)
                {
                    int sum = board[i] + board[j] + board[q];
                    if(sum == N){
                        cout << 1 <<'\n';
                        goto stop;
                    }
                }
            }
        }
        cout << 0 <<'\n';
        stop:;
    }
    return 0;
}
  • key point!
    : board[51]은 최대입력인 1000보다 크니까 전체범위를 51로 해도 충분함! (시간이 엄청 단축된다)
  • goto사용
    : 적절하게 goto를 사용하면 다중 중첩 반복문에서 flag가 없어도된다
profile
Developer & PhotoGrapher

0개의 댓글