[백준] 4796번 - 캠핑

yerimstar·2021년 10월 6일
0

그리디

목록 보기
1/10

아이디어

문제를 읽자마자 식이 떠올랐다.
8일 중 5일의 휴가를 사용할 수 있는 사람에게 20일의 휴가가 생긴다면,
(20//8) * 5 + 20%8 = 14
이와 같은 식을 일반화시켜서 코드를 작성하였다.

1차 코드

# 캠핑
import sys
while(1):
    L,P,V = map(int,sys.stdin.readline().split())
    if L == 0 and P == 0 and V == 0: # 종료조건
        exit()

    camping = V // P
    max_camping = L * camping + (V - P * camping)
    print(max_camping)

=> 런타임에러 발생
1) L값이 남은 기간보다 더 짧을 수 있기 때문에 min함수를 이용하여 값을 비교해주어야 한다.
2) 출력이 Case %d: %d 형태로 되어야 하는데, 이를 신경쓰지 못했다.

2차 코드

# 캠핑
import sys
i = 1
while(1):
    L,P,V = map(int,sys.stdin.readline().split())
    if L == 0 and P == 0 and V == 0:
        break
    camping = V // P
    max_camping = L * camping + min(L, V % P)
    print("Case %d: %d" %(i,max_camping))
    i += 1
profile
백엔드 개발자

1개의 댓글

comment-user-thumbnail
2021년 10월 7일

바보

답글 달기