백준 알고리즘 9095. 1, 2, 3 더하기
2024. 3. 12. 20:17ㆍ코딩 테스트/백준
https://www.acmicpc.net/problem/9095
9095번: 1, 2, 3 더하기
각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.
www.acmicpc.net
전체 코드
import collections
def merge_two_set(s1: set, s2: set):
merged_set = set()
for e1 in s1:
for e2 in s2:
merged_set.add(e1 + e2)
merged_set.add(e2 + e1)
return merged_set
def solution(n):
registered_set_table = collections.defaultdict(set)
registered_set_table[1] = {(1, )}
registered_set_table[2] = {(1, 1), (2, )}
registered_set_table[3] = {(1, 1, 1), (1, 2), (2, 1), (3, )}
if 1 <= n <= 3:
return len(registered_set_table[n])
for i in range(4, n + 1):
mid = i // 2
left = 1
new_set = set()
while left <= mid:
right = i - left
new_set |= merge_two_set(registered_set_table[left], registered_set_table[right])
left += 1
registered_set_table[i] = new_set
return len(registered_set_table[n])
T = int(input())
for i in range(T):
n = int(input())
print(solution(n))
'코딩 테스트 > 백준' 카테고리의 다른 글
백준 알고리즘 2606. 바이러스 (1) | 2024.03.12 |
---|---|
백준 알고리즘 2178. 미로 탐색 (0) | 2024.03.12 |
백준 알고리즘 1463. 1로 만들기 (0) | 2024.03.12 |
백준 알고리즘 24416. 피보나치 수1 (0) | 2024.03.12 |
백준 알고리즘 2748. 피보나치 수 2 (0) | 2024.03.12 |