백준 문제풀이 - 4796번

이형래·2022년 6월 28일
0

백준문제풀이

목록 보기
19/36

백준 문제풀이 - 4796 번


링크 -> https://www.acmicpc.net/problem/4796


1. 요약 및 풀이방법

캠핑장을 연속하는 P일 중, L일 동안만 사용할 수 있을 때,
V일 짜리 휴가를 시작한다면 캠핑장을 최대 며칠동안 사용할 수 있는지 구하는 문제입니다.

캠핑장을 최대로 사용하기 위해서는,
휴가 시작하자마자 L일을 연속해서 사용하고,
P-L 일만큼 사용하지 않은 뒤,
다시 L일을 연속해서 사용해야 합니다.

예를 들어, 연속하는 8일(P) 중 5일(L) 동안만 사용할 수 있는 캠핑장에
20일(V) 짜리 휴가를 사용해서 가면

5일(사용) -> 3일(미사용) -> 5일(사용) -> 3일(미사용) -> 4일(사용)
하여 최대 14일을 사용할 수 있습니다.


2. Code

import sys

def main():
    case = 1
    while True:
        L, P, V = map(int, sys.stdin.readline().rstrip().split())
        if not L:
            break

        total = 0
        quotient, remainder = divmod(V, P)
        total = quotient * L + min(remainder, L)
        print(f"Case {case}: {total}")
        case += 1

if __name__ == "__main__":
    main()

3. 학습 내용

python 에는 몫과 나머지를 한번에 구할 수 있는 divmod 함수가 있습니다.
divmod 함수는 (몫, 나머지) 형태의 tuple을 리턴합니다.
그렇기 때문에 정수 형태의 몫을 리턴합니다.
단, 작은 숫자를 다룰 때에는 a//b, a%b 가 더 빠르다고 합니다.


4. 결과

profile
머신러닝을 공부하고 있습니다. 특히 비전 분야에 관심이 많습니다.

0개의 댓글