[210426][백준/BOJ] 2839번 설탕 배달
문제
입출력
풀이
dp를 이용해서 문제를 풀 수 있다.
i 킬로그램 배달을 해야할때 필요한 봉지의 개수가 d[i] 일때
d[i] = min(d[i-3] + 1, d[i-5] + 1) 이다.
또한 최소값을 구하는 문제이므로 d 배열을 큰 값으로 초기화해줘야 한다.
코드
#include <bits/stdc++.h>
using namespace std;
int d[5002];
int dp(int n)
{
fill(d, d + n + 1, 999999);
d[3] = 1;
d[5] = 1;
for (int i = 6; i <= n; ++i)
d[i] = min(d[i - 3] + 1, d[i - 5] + 1);
return d[n];
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
if (dp(n) >= 999999) cout << -1;
else cout << dp(n);
}
Author And Source
이 문제에 관하여([210426][백준/BOJ] 2839번 설탕 배달), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kwkim95/210424백준BOJ-2839번-설탕-배달저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)