승코딩당당당

[C++] 백준 4796: 캠핑 본문

PS/BOJ

[C++] 백준 4796: 캠핑

승코딩당당당 2026. 1. 14. 16:48

문제

[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