-문제:https://www.acmicpc.net/problem/2839
처음에는 5를 기준으로 하고, 나머지는 3키로 봉지로 충당하면되겠지 생각했는데, 정확하게 n키로를 5와 3으로 맞춰야 정답이다
5를 기준으로 생각하는 것 맞지만, 18 같은 경우는 3*6도 되고, 15+3도 되기 때문에 이거를 어떻게 해야할지 몰랐다
나름 dp로 풀어본다고 했는데 틀린 답이 나왔다
-정답 풀이:
while문을 돌리면서 5의 배수이면 그대로 계산하고, 아닌 경우는 3을 감소시키면서 지켜본다
while문에서 출력이 되지 않으면 n<0인 상황이 되어 while문을 나오는데, 그 경우에는 -1을 출력해주면 된다
n=int(input())
dp=[0]*5001
dp[3],dp[5]=1,1
bag=0
while n>=0:
if n%5==0:
bag+=n//5
print(bag)
break
else:
n-=3
bag+=1
else:
print(-1)
-틀린 풀이:
n=int(input())
dp=[0]*5001
dp[3],dp[5]=1,1
bag=0
for i in range(6,n+1):
if dp[i-5]!=0:
bag= 1+dp[i-5]
elif i%3==0:
dp[i]=i//3
else:
print(-1)
break
print(dp[n])
'백준 > Greedy' 카테고리의 다른 글
[그리디/백준] 11399번: ATM (0) | 2022.06.23 |
---|---|
[그리디/백준] 11047번: 동전0 (2차) (0) | 2022.06.23 |
[백준] 2812번: 크게 만들기 (0) | 2022.02.11 |
[백준] 10775번: 공항(다시) (0) | 2022.02.11 |
[백준] 2810번: 컵홀더 (0) | 2022.02.11 |