지나공 : 지식을 나누는 공간
[백준] 4796번_캠핑 C++ 풀이 본문
문제링크 : www.acmicpc.net/problem/4796
주석 없는 코드
#include <iostream>
using namespace std;
int l, p, v,i;
int main() {
do {
i++;
cin >> l >> p >> v;
if (l == 0 && p == 0 && v == 0)
break;
int ans = (v / p) * l + min(v % p, l);
cout <<"Case "<<i<<": "<< ans<<"\n";
} while (1);
return 0;
}
주석 있는 코드
#include <iostream>
using namespace std;
int l, p, v,i;
int main() {
do {
i++; //case번호
cin >> l >> p >> v;
if (l == 0 && p == 0 && v == 0)
break;
//추가설명하겠음
int ans = (v / p) * l + min(v % p, l);
cout <<"Case "<<i<<": "<< ans<<"\n";
} while (1);
return 0;
}
ans = (v/p) * l + min(v%p, l)인데,
(v/p) * l 은 연속하는 p일이 v일 중에 몇 번인지 세고, 각 p일 중 l일만 사용 가능하므로 이런 식이 나오는 것이다.
min(v%p, l)을 더하는 부분은 만약 l,p,v가 5, 8, 20이라고 할 때 연속하는 8일씩 돌고 난 뒤 남은 나머지 4일에 대한 것이다. 나머지와 사용가능일수를 비교해서 더 적은 날만큼 더 이용이 가능하므로 위의 식을 더한다.
728x90
'Algorithm > 백준' 카테고리의 다른 글
[백준 2805번] 나무자르기_C++ 이분탐색 & DP (0) | 2021.02.25 |
---|---|
[백준 1063번] 킹 _C++_풀이 (0) | 2021.02.24 |
[백준] 7571_점 모으기_C++ 풀이, 시간초과 해결하기 (0) | 2021.01.19 |
[백준] 1759_암호 만들기 C++ (0) | 2021.01.11 |
Comments