https://www.acmicpc.net/problem/10816
from sys import stdin
import collections
N = int(stdin.readline())
cards = list(map(int, stdin.readline().split()))
M = int(stdin.readline())
nums = list(map(int, stdin.readline().split()))
count = collections.Counter(cards)
for n in nums:
print(count[n], end=" ")
N, card, M, nums 를 모두 입력받고
상근이 카드의 count 를 구해서
nums 의 숫자들을 하나씩 보며 count 값 print

https://www.acmicpc.net/problem/9095
from sys import stdin
T = int(stdin.readline())
cases = set()
def func(n, t):
if n == 0:
cases.add(t)
elif n < 0:
return
func(n-1, t+"1")
func(n-2, t+"2")
func(n-3, t+"3")
for _ in range(T):
n = int(stdin.readline())
cases = set()
func(n, "")
print(len(cases))
cases set 를 만들어서
1, 2, 3 을 각각 뺀 경우를 재귀로 돌리고
완성된 조합 (n == 0) 을 cases 에 저장하고 길이 print

from sys import stdin
T = int(stdin.readline())
def func(n):
if n == 1:
return 1
elif n == 2:
return 2
elif n == 3:
return 4
else:
return func(n-1) + func(n-2) + func(n-3)
for _ in range(T):
n = int(stdin.readline())
print(func(n))
dp 이용
1 ~ 5 정도까지 직접 계산해보면
f(n) = f(n-1) + f(n-2) + f(n-3)
의 점화식을 얻을 수 있다.
dp 리스트를 직접 만들어 더하는 것도 가능
