프로그래머스 Lv.3
-숫자게임
def solution(A, B):
answer = 0
A.sort(reverse = True)
B.sort(reverse = True)
for a in A:
if a > B[0]:
answer += 0
elif a < B[0]:
answer += 1
del B[0]
return answer
-거스름돈
def solution(n, money):
k = [0] * (n+1)
k[0] = 1
for i in money:
for price in range(i, n+1):
if price >= i:
k[price] += k[price- i]
return k[n] % 1000000007
백준
-설탕 배달
n = int(input())
if n % 5 == 0:
print(n // 5)
else:
bags = 0
while n > 0:
n -= 3
bags += 1
if n % 5 == 0:
bags += n // 5
print(bags)
break
elif n == 1 or n == 2:
print(-1)
break
elif n == 0:
print(bags)
break
-1로 만들기
x = int(input())
d = [0]*(x+1)
for i in range(2, x+1):
d[i] = d[i-1]+1
if i % 2 == 0:
d[i] = min(d[i], d[i//2]+1)
if i % 3 == 0:
d[i] = min(d[i], d[i//3]+1)
print(d[x])
-2 * N 타일링
memo = [0]*1000000
def fibo(k):
global memo
if memo[k] != 0:
return memo[k]
elif k == 2:
return 1
elif k == 3:
return 2
else:
memo[k] = (fibo(k-1) + fibo(k-2))%10007
return memo[k]
n = int(input())
print(fibo(n+1) % 10007)
-파도반수열
P = [0 for i in range(101)]
P[1] = 1
P[2] = 1
P[3] = 1
for i in range(4, 101):
P[i] = P[i-2] + P[i-3]
t = int(input())
for i in range(t):
n = int(input())
print(P[n])
-2 * N 타일링 2
F = [0 for i in range(1001)]
F[1] = 1
F[2] = 3
for i in range(3, 1001):
F[i] = F[i-1] + 2 * F[i-2]
n = int(input())
print(F[n] % 10007)
-피보나치수열 2
memo = [0]*1000000
def fibo(k):
global memo
if memo[k] != 0:
return memo[k]
elif k == 0:
return 0
elif k == 1 or k == 2:
return 1
else:
memo[k] = fibo(k-1) + fibo(k-2)
return memo[k]
n = int(input())
print(fibo(n))
-이항계수2(실패)
from itertools import combinations
n, k = map(int, input().split())
if n - k < k:
k = n - k
data = [0] * n
print(len(list(combinations(data, k))) % 10007)