Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

1R/2016 09 28

From ZeroWiki
Revision as of 14:46, 26 March 2026 by Maintenance script (talk | contribs) (Repair pages found by live-compare batch 0001)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

오늘의 문제

참가자

  • 15이원준
  • 박인서

코드

15이원준

#include<iostream>
 
using namespace std;
 
int main(){
    int arr[46];
    int dp[1001] = { 0, };
    for(int i = 1; i<45; i++){
        arr[i] = (i*(i+1))/2;
    }
    for(int i = 1; i<45; i++){
        for(int j = 1; j<45 && arr[i] + arr[j] <= 1000; j++){
            for(int k = 1;arr[i] + arr[j] + arr[k] <=1000 && k<45; k++){
                dp[arr[i] + arr[j] + arr[k]] = 1;
            }
        }
    }
    int N;
    cin>> N;
    for(int i = 0; i<N; i++){
        int tmp;
        cin>> tmp;
        cout<< dp[tmp] <<endl;
    }
}

박인서

#include <iostream>

int a[50] = { 0, };

int check(int n) {
	for (int i = 1; a[i] <= n; i++) {
		for (int j = i; a[j] <= n - a[i]; j++) {
			for (int k = j; a[k] <= n - a[i] - a[j]; k++) {
				if (a[i] + a[j] + a[k] == n) return 1;
			}
		}
	}
	return 0;
}

int main()
{
	int t;
	for (int i = 0, j = 0; j < 1000; i++, j += i)
		a[i] = j;
	std::cin >> t;
	
	while (t--) {
		int n;
		std::cin >> n;
		std::cout << check(n) << std::endl;
	}
	return 0;
}

곽정흠

아이디어

15이원준

  • 미리 세개로 만들 수 있는 수를 구해둔 다음 input값의 결과로 출력했습니다.

박인서

  • 1000까지의 삼각 수들을 구한 뒤 입력 값에 따라 3중 for문을 돌려가며 확인한다.

곽정흠