728x90
반응형
문제 링크
10448번: 유레카 이론
프로그램은 표준입력을 사용한다. 테스트케이스의 개수는 입력의 첫 번째 줄에 주어진다. 각 테스트케이스는 한 줄에 자연수 K (3 ≤ K ≤ 1,000)가 하나씩 포함되어있는 T개의 라인으로 구성되어
www.acmicpc.net
문제 접근
// 접근: 3개의 합으로 되는지 아닌지만 구별 -> 3중 반복문으로 완전탐색
// 하지만 4중 반복으로 해야 모든 테스트 케이스를 돌 수 있다.
문제 풀이
// 풀이: 런타임 초과 날까봐 t의 최대값이 1000=i(i+1)/2 를 이용 500 까지만 반복하게 함
주의
개념
소스코드
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstdio> // c 문법 헤더파일
#include<string> // c++ 문자열 클래스
#include<vector> // 동적배열 라이브러리
#include<stack>
#include<queue>
#include<algorithm> // sort와 unique 사용
#include<cmath> // 제곱이나 루트함수 사용
#include<cstring> // memset 함수
#include <set>
#include <map> // map구조체
#include <numeric> //accumulate(v.begin(), v.end(), 0);
// [백준 10448 c++] 유레카 이론
// 접근: 3개의 합으로 되는지 아닌지만 구별 -> 3중 반복문으로 완전탐색
// 하지만 4중 반복으로 해야 모든 테스트 케이스를 돌 수 있다.
// 풀이: 런타임 초과 날까봐 t의 최대값이 1000=i(i+1)/2 를 이용 500 까지만 반복하게 함
//
using namespace std; // cin,cout 편하게 사용 라이브러리
#define MAX 50
int n;
vector<int> v;
int main()
{
// IO 속도 향상
//ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> n;
for (int i = 0; i < n; i++)
{
int tp;
cin >> tp;
v.push_back(tp);
}
for (int p = 0; p < n; p++)
{
int c = 0;
for (int i = 1; i < 500; i++)
{
for (int j = 1; j < 500; j++)
{
for (int q = 1; q < 500; q++)
{
if (i * (i + 1) / 2 + j * (j + 1) / 2 + q * (q + 1) / 2 == v[p])
{
c++;
// 3중 반복 끝내기
q = 500;
j = 500;
i = 500;
}
}
}
}
cout << c << '\n';
}
return 0;
}
반응형
'Algorithm_BOJ(백준) > 완전탐색(Brute Force)' 카테고리의 다른 글
[백준 1018 c++] 체스판 다시 칠하기 (0) | 2021.02.04 |
---|---|
[백준 2503 c++] 숫자 야구 (0) | 2021.02.04 |
[백준 2309 c++] 일곱 난쟁이 (0) | 2021.02.02 |
[백준 2231 c++] 분해합 (0) | 2021.02.02 |
[백준 3085 python파이썬] 사탕 게임 (0) | 2021.02.02 |