티스토리 뷰
본 문제는 입력받은 휴가 일수 V 와 캠핑장의 연속 운영 일수 P, 캠핑장의 사용 가능 일수 L 간의 관계성을 찾으면 쉽게 모델링하여 해결할 수 있는 문제였습니다.
강산이가 캠핑장을 최대로 이용할 수 있는 일수를 Y 라 할때, Y 는 아래의 수식으로 부터 계산될 수 있습니다.
Y = (V / P) x L + min(V % P, L) (1)
(V / P) 의 결과는 정수형이다.
예시로 들어 설명하면 강산이의 휴가 일수가 20(=V), 캠핑장의 연속 운영 일수가 8(=P), 캠핑장의 사용 가능 일수가 5(=L) 일 때,
휴가 일수 20일동안 강산이는 캠핑장을 최대 3번 방문 가능합니다. 캠핑장이 강산이의 휴가 시작 일자부터 오픈한다 했을때, 강산이는 휴가 시작 일자부터 8일, 그 이후로 8일, 마지막으로 남은 4일 이렇게 3번 캠핑장을 방문할 수 있습니다. 그중 첫 방문한 8일 중 5일, 두번째 방문한 8일 중 5일, 마지막에 방문할때 4일간 캠핑장을 이용할 수 있으므로 정답은 14일이 됩니다.
수식 (1) 과 위 설명을 비교해보면 첫항인 (V / P) x L 로부터 강산이가 캠핑장을 첫 방문했을때와 두번째 방문했을때의 이용 일수를 모두 합한 10일이 계산되고, 두번째 항인 min(V % P, L) 로부터 마지막에 캠핑장을 방문했을때의 이용 일수인 4가 계산되는 것입니다.
코드
#include <iostream>
using namespace std;
int main()
{
/*캠핑장을 연속하는 P일 중, L일동안만 사용할 수 있다.
강산이는 이제 막 V일짜리 휴가를 시작했다. 강산이가 캠핑장을 최대 며칠동안 사용할 수 있을까? (1 < L < P < V)*/
//freopen("4796.txt", "r", stdin);
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int c=1;
while(true)
{
int L;
int P;
int V;
cin >> L >> P >> V;
if(L == 0 && P ==0 && V == 0)break;
int rent_day = int(V/P)*L + min(V%P, L);
cout << "Case " << c++ << ": "<< rent_day << '\n';
}
return 0;
}
'Problem Solving > 백준 온라인 저지' 카테고리의 다른 글
17780-새로운 게임 (0) | 2020.09.17 |
---|---|
17825-주사위 윷놀이 (0) | 2020.09.13 |
1793-타일링 (0) | 2020.09.11 |
3197-백조의 호수 (0) | 2020.09.11 |
1562-계단 수 (0) | 2020.09.07 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 백준 11437
- 이분탐색
- 조합
- 자료구조
- 백준
- 순열
- 단축키
- 백트래킹
- 백준 11053
- LCA
- 인공지능을 위한 선형대수
- PyCharm
- 문제집
- cosine
- 가장 긴 증가하는 부분 수열
- MOT
- C++ Deploy
- 위상 정렬 알고리즘
- 파이참
- FairMOT
- ㅂ
- 백준 1766
- Lowest Common Ancestor
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함