Notice
Recent Posts
Recent Comments
Link
승코딩당당당
[C++] 백준 4796: 캠핑 본문
문제
[C++] 백준 4796: 캠핑 BRONZE 1
https://www.acmicpc.net/problem/4796

접근 방법
이 문제는 캠핑장을 사용할 수 있는 규칙이 주어졌을 때, 최대 며칠 동안 캠핑장을 이용할 수 있는지를 계산하는 문제이다.
- 연속 P일 중에서 최대 L일만 캠핑장을 사용할 수 있고
- 총 휴가 기간은 V일이다.
먼저 V일을 P일 단위로 나누면, 완전한 주기(V / P)마다 L일씩 캠핑장을 사용할 수 있다.
남는 기간(V % P)에 대해서는 L일을 넘길 수 없으므로 min(L, V % P) 만큼만 추가로 사용할 수 있다.
따라서 전체 사용 가능한 일수는 다음과 같이 계산된다.
L × (V / P) + min(L, V % P)
구현 시 주의할 점
- 남은 날짜에서 사용할 수 있는 최대 일수를 계산할 때 min(L, V % P)를 사용하는 것이 핵심이다.
이 처리를 하지 않으면 남은 기간에서 L일을 초과해 계산하는 실수가 발생할 수 있다.이것 때문에 틀렸음..
코드
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int l = 0, p = 0, v = 0;
int test_case = 1;
while (1)
{
cin >> l >> p >> v;
if (l == 0 && p == 0 && v == 0)
break;
int ret = (l * (v / p)) + min(l, v % p);
cout << "Case " << test_case << ": " << ret << '\n';
test_case++;
}
return 0;
}
'PS > BOJ' 카테고리의 다른 글
| [C++] 백준 1920: 수 찾기 (1) | 2026.01.25 |
|---|---|
| [C++] 백준 7568: 덩치 (0) | 2026.01.15 |
| [C++] 백준 1931: 회의실 배정 (0) | 2026.01.14 |
| [C++] 백준 2468: 안전 영역 (1) | 2026.01.14 |
| [C++] 백준 2667: 단지번호붙이기 (0) | 2026.01.12 |