from itertools import combinations
import sys
input = sys.stdin.readline
tri = [n * (n + 1) // 2 for n in range(46)]
for _ in range(int(input())) :
yes = 0
num = int(input())
for i in range(1, 46) :
for j in range(i, 46) :
for k in range(j, 46) :
if tri[i]+tri[j]+tri[k] == num :
yes = 1
print(yes)
완전 탐색을 이용해 해결했다.
테스트케이스가 1000까지 이기 때문에 넉넉하게 46번째까지 미리 구해서 배열에 넣어주었다.
겹치지 않는 3개의 유레카 수의 합이 입력받는 값과 같아진다면 1을 출력하게 해주었다.
'프로그램 > 코딩테스트' 카테고리의 다른 글
백준 1931 회의실 배정 (0) | 2022.06.13 |
---|---|
백준 3085 사탕 게임 (0) | 2022.06.13 |
백준 3040 백설 공주와 일곱 난쟁이 (0) | 2022.06.13 |
백준 2075 N번째 큰 수 (0) | 2022.06.13 |
백준 1935 후위 표기식2 (0) | 2022.06.13 |
댓글