[브론즈 1] 백준 10448 - 유레카 이론 (파이썬)
글 작성자: pental
https://www.acmicpc.net/problem/10448
풀이
D = [0] * 50
D[0] = 1
D[1] = 3
for i in range(1, 50):
D[i] = D[i - 1] + i + 1
삼각수를 생성한다.
for combination in combinations(D, 3):
if sum(combination) == N:
found = True
break
- combinations(D, 3)는 중복 없이 3개를 뽑아 더한 것이 N과 같은지 확인
- 중복이 안되기 때문에 예를 들어 (3, 3, 3) 같은 케이스는 이 조건에 안 걸림
for combination in combinations(D, 2):
if combination[0] * 2 + combination[1] == N:
found = True
break
if combination[0] + combination[1] * 2 == N:
found = True
break
if N % 3 == 0 and N // 3 in D:
found = True
- 2개 조합에서 한 쪽을 2번 더해 3개의 합 만들기
- 혹은 하나를 3번 더한 경우도 따로 처리 (즉, 3의 배수이면서 삼각수일 때)
코드
# 백준 10448 - 유레카 이론
# 분류 : 브루트 포스
from itertools import combinations
T = int(input())
D = [0] * 50
D[0] = 1
D[1] = 3
for i in range(1, 50) :
D[i] = D[i - 1] + i + 1
for _ in range(T) :
N = int(input())
found = False
for combination in combinations(D, 3) :
if sum(combination) == N :
found = True
break
for combination in combinations(D, 2) :
if combination[0] * 2 + combination[1] == N :
found = True
break
if combination[0] + combination[1] * 2 == N :
found = True
break
if N % 3 == 0 and N // 3 in D :
found = True
if found :
print("1")
else :
print("0")
from itertools import combinations
T = int(input())
D = [0] * 50
D[0] = 1
for i in range(1, 50) :
D[i] = D[i - 1] + i + 1
E = [[False] * 4 for _ in range(1001)]
E[0][0] = True
for i in range(1, 1001) :
for j in range(1, 4) :
E[i][j] = False
for k in D :
if i < k :
break
E[i][j] |= E[i - k][j - 1]
for _ in range(T) :
N = int(input())
if E[N][3] :
print("1")
else :
print("0")
'Programming > 백준' 카테고리의 다른 글
[실버 2] 백준 1500 - 최대 곱 (파이썬) (0) | 2025.05.18 |
---|---|
[실버 3] 백준 1012 - 유기농 배추 (파이썬) (0) | 2025.05.17 |
[실버 3] 백준 23351 - 물 주기 (파이썬) (1) | 2025.05.15 |
[실버 5] 백준 27111 - 출입 기록 (파이썬) (0) | 2025.05.14 |
[실버 1] 백준 15903 - 카드 합체 놀이 (파이썬) (0) | 2025.05.13 |
댓글
이 글 공유하기
다른 글
-
[실버 2] 백준 1500 - 최대 곱 (파이썬)
[실버 2] 백준 1500 - 최대 곱 (파이썬)
2025.05.18 -
[실버 3] 백준 1012 - 유기농 배추 (파이썬)
[실버 3] 백준 1012 - 유기농 배추 (파이썬)
2025.05.17 -
[실버 3] 백준 23351 - 물 주기 (파이썬)
[실버 3] 백준 23351 - 물 주기 (파이썬)
2025.05.15 -
[실버 5] 백준 27111 - 출입 기록 (파이썬)
[실버 5] 백준 27111 - 출입 기록 (파이썬)
2025.05.14