본문 바로가기

코딩테스트 준비/[백준]

[백준] 4796번 - 캠핑 (파이썬)

www.acmicpc.net/problem/4796

 

4796번: 캠핑

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다.

www.acmicpc.net

[코드]

cnt = 1
while True:
    L, P, V = map(int, input().split())
    if L == 0 and P == 0 and V == 0:
        break
    answer = 0

    while V > 0:
        if V - P > 0:
            V -= P
            answer += L
        else:
            if V >= L:
                answer += L
                break
            else:
                answer += V
                break
    print('Case ' + str(cnt) + ':', end=' ')
    print(answer)
    cnt += 1
        
    

 

[아이디어]

탐욕 알고리즘 적용 그 자체보다 문제이해가 더 안되었다.

문제를 다시 설명하면 다음과 같다.

총 휴가일수가 20일 일때 8일중 5일만 연속해서 캠핑을 사용할 수 있다는 것은 5일동안 캠핑이용하면 반드시 적어도 3일이상 캠핑 이용 못한다는 것이다.

다시말해 20일중 => 5일캠핑, 3일캠핑X, 5일캠핑, 3일캠핑X, 남은4일캠핑

총 14일 캠핑 이용할 수 있다는 것이다.

그냥 왼쪽서부터 채워나가면 된다.

 

[참고]

여전히 map 함수가 햇갈림

dojang.io/mod/page/view.php?id=2286