Week 01 ~ 04 : 알고리즘 문제 풀이 104

파이썬 백준 9084 동전

1 2 3 4 5 6 7 8 9 10 11 testcase = int(input()) for t in range(testcase) : n = int(input()) C = list(map(int, input().split())) m = int(input()) DP = [0 for i in range(m + C[-1] + 1)] DP[0] = 1 for coin in C : for i in range(1, m + 1) : DP[i] = DP[i] + DP[i - coin] print(DP[m]) cs IDEA 50원, 100원, 500원 동전이 있다고 하자. 5000원을 만드는 경우는, 4500원을 만드는 경우에 500원 하나를 더하거나, 4900원을 만드는 경우에 100원 하나를 더하거나, 4950원을 ..

파이썬 백준 1904 01타일

1 2 3 4 5 6 n = int(input()) list = [0, 1, 0] for i in range(n) : list[2] = (list[0] + list[1]) % 15746 list[0], list[1] = list[1], list[2] print(list[min(n, 2)]) cs IDEA 길이 n의 수열은 길이 n-1의 수열에 1을 붙이거나, 길이 n-2의 수열에 00을 붙여서 만들어진다. 점화식으로 나타내면 f(n) = f(n-1) + f(n-2)인 피보나치 수열이다. n-2 이전의 값은 f(n)을 구하는데 필요없으므로, dp는 3칸만 있으면 된다.