티스토리 뷰

Problem Solving/BOJ Solution

BOJ #4796 - 캠핑

hyp3rflow 2019. 7. 28. 22:49
https://www.acmicpc.net/problem/4796

# 문제 분류
그리디 알고리즘

풀이 접근 방법 :

 

1. 캠핑을 오래 하기 위해서는

2. 휴가가 시작하자마자 캠핑을 가서

3. 최대치를 채우면 쉬고 다시 가면 된다. 구현해보자.


남은 휴가일 수 V가 연속 P일 중 가능일 수 L보다 크거나 같다면, 가능일 수 L만큼 모두 캠핑을 즐길 수 있는 것이다. -> res += L

그렇지 않다면, 가능일 수 L을 채울만큼 V가 남지 않았다는 말이므로, 그래도 V만큼은 캠핑을 갈 수 있다. -> res += V

이러한 연산의 주기는 '연속 P일 중' 가능일 수 L이기 때문이므로, 휴가일에서는 P를 빼준다.

다음 loop에서는 V가 양수인지 아닌지만 판단해주면 된다. 더 이상 휴가가 남지 않을 때까지 돌려준다.

 

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
#include <iostream>
#include <algorithm>
 
using namespace std;
 
int L, P, V, cnt = 1, res;
 
int main() {
    while (1) {
        cin >> L >> P >> V;
        res = 0;
 
        if (L == 0break;
        else {
            while (V > 0) {
                if (V >= L) res += L;
                else res += V;
                V -= P;
            }
 
            cout << "Case " << cnt++ << ": " << res << endl;
        }
    }
 
    return 0;
}
 
cs

'Problem Solving > BOJ Solution' 카테고리의 다른 글

BOJ #1753 - 최단경로  (0) 2019.10.01
BOJ #4307 - 개미  (0) 2019.07.29
BOJ #1449 - 수리공 항승  (0) 2019.07.28
BOJ #11000 - 강의실 배정  (0) 2019.07.28
BOJ #1700 - 멀티탭 스케줄링  (0) 2019.07.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/04   »
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
글 보관함