ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Greedy] BOJ 4796 번 : 캠핑
    백준 문제풀이/GREEDY 2019. 5. 29. 00:15

    문제 보기


     

    정말 작심삼일이라고 고작 8일하고 포기했던 1일 1백준을 다시 시작합니다...
    정말 직관적이고 쉬운 문제를 풀면서 자신감을 키우기 위해 그리디문제를 가져왔습니다.

     

    풀이


     연속하는 20일중 10일을 사용할 수 있다 .... 이런 경우에 캠핑을 가장 많이 사용하기 위해서는 어떻게 해야될까요? 당연히 휴가 시작날짜부터 바로 캠핑을 시작하는 것이 가장 많이 사용하는 방법일겁니다. 그렇게 되면 휴가 28일중 첫날부터 사용하여 연속하는 20일 동안 총 10일을 사용할수 있을것입니다. 그리고 남은 8일은 다시 연속하는 20일이 되기 때문에 사용횟수가 초기화되서 8일 모두 사용할 수 있게 됩니다. 이러한 상황을 이제 코드로 구현해봅시다.

     

    1. 이러한 Case 의 번호를 저장할 변수 a 를 선언합니다.
    2. 연속적인 연산작업을 위해 무한루프를 구현합니다. 
    3.  L : 사용횟수 , P : 연속하는 일수 , V : 휴가 일수 를 입력받습니다.
    4.  L ,P, V 가 모두 0인 경우 무한루프를 빠져나갑니다.
    5.  V 를 P 로 나눈 나머지가 L 보다 큰경우 L 을 작은경우 나머지를 OP값에 저장.               
    6.  (V/P) * L 값에 이전에 구한 OP 값을 더해서 결과값에 저장한다.
    7. 출력.

    코드

    #include <iostream>
    
    using namespace std;
    int main() {
    	int a = 1;
    	while (1) {
    		int L, P, V;
    		cin >> L >> P >> V;
    		if (!L && !P && !V) break;
    		int op = (V%P) > L ? L : (V%P);
    		int result = (V / P) * L + op;
    		cout << "Case " << a++ << ": " << result << '\n';
    	}
    	return 0;
    }

    '백준 문제풀이 > GREEDY' 카테고리의 다른 글

    [Greedy] BOJ 1449번 : 수리공 항승  (0) 2019.05.29

    댓글

Designed by Tistory.