[Python 알고리즘] 4796번 : 캠핑

2022. 2. 12. 14:24·Python 알고리즘
반응형

문제

  • 등산가 김강산은 가족들과 함께 캠핑을 떠났다. 하지만, 캠핑장에는 다음과 같은 경고문이 쓰여 있었다. 캠핑장은 연속하는 20일 중 10일동안만 사용할 수 있습니다. 강산이는 이제 막 28일 휴가를 시작했다. 이번 휴가 기간 동안 강산이는 캠핑장을 며칠동안 사용할 수 있을까? 캠핑장을 연속하는 P일 중, L일동안만 사용할 수 있다. 강산이는 이제 막 V일짜리 휴가를 시작했다. 강산이가 캠핑장을 최대 며칠동안 사용할 수 있을까? (1 < L < P < V)
  • 강산이는 조금 더 일반화해서 문제를 풀려고 한다. 
  • 캠핑장은 연속하는 20일 중 10일동안만 사용할 수 있습니다.

입력

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

출력

  • 각 테스트 케이스에 대해서, 강산이가 캠핑장을 최대 며칠동안 사용할 수 있는지 예제 출력처럼 출력한다.
Case 1: 14
Case 2: 11

내가 제출한 풀이 - 정답

import sys

cnt = 0

while True:
    cnt += 1
    res = 0
    l, p, v = list(map(int, sys.stdin.readline().strip().split()))

    if l == 0 and p == 0 and v == 0:
        break

    res = (v // p) * l
    res += min(v % p, l)
    print(f"Case {cnt}: {res}")

문제풀이

l = 5,  p = 8, v = 20이라고 보도록하자.

총 휴가일수 20일(v)동안 캠핑장을 연속 8일(p)동안 5일(l)동안만 캠핑장을 쓸수 있다.

쉽게 말하면 v // p는 총 몇 번 캠핑장이 열리는지 알려주고 * l을 해주면 캠핑장을 며칠 쓸수 있는지 알 수 있다.

결론적으로 (v // p) * l은 내가 휴가동안 캠핑장을 몇 번 쓸수 있는지 알려준다.

res = (v // p) * l

총 20일동안 캠핑장 2번(16일) 열었다면 4일이 남게된다.

그러면 나머지 4일과 l과 비교하여 추가적으로 며칠 더 사용할 수 있는지 알 수 있게된다.

하지만 5일동안 이용할 수 있지만 남은 일수가 6일이라면 5번만 사용할 수 있게 된다. 그러면 min 함수로 비교를 통해 더 적은 값을 더해주면 된다.

 

res += min(v % p, l)​
반응형

'Python 알고리즘' 카테고리의 다른 글

[Python 알고리즘] 백준 128475번 : 모두의 마블  (0) 2022.02.19
[Python 알고리즘] 1541번 : 잃어버린 괄호  (0) 2022.02.12
[Python 알고리즘] 백준 1946번 : 신입사원  (0) 2022.02.12
[Python 알고리즘] 백준 13458번 : 시험 감독  (0) 2022.02.06
[Python 알고리즘] 백준 2217번 : 로프  (0) 2022.02.06
'Python 알고리즘' 카테고리의 다른 글
  • [Python 알고리즘] 백준 128475번 : 모두의 마블
  • [Python 알고리즘] 1541번 : 잃어버린 괄호
  • [Python 알고리즘] 백준 1946번 : 신입사원
  • [Python 알고리즘] 백준 13458번 : 시험 감독
seungyong20
seungyong20
  • seungyong20
    코딩 기록소
    seungyong20
  • 전체
    오늘
    어제
    • 분류 전체보기 (51)
      • Python 알고리즘 (38)
      • 자료구조 (1)
      • Project 하면서 알아가는 것들 (12)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • 기록하는 습관을 기르자
  • 인기 글

  • 태그

    kafka
    join fetch 주의점
    python 알고리즘
    jpa n + 1 문제
    jpa 쿼리 최적화
    python slicing
    jpa 에러
    python 그리디 알고리즘 문제 추천
    fetch join 주의점
    Python
    JPA
    python 방향벡터
    python 이코테
    python 정렬
    jpa fetch
    jpa lazy vs eager
    python 그리디 문제 추천
    jpa multiplebagexception
    python 2차원 배열
    python heap
    그리디 알고리즘
    Typescript
    multiplebagexception set list
    백준
    multiplebagexception
    python 브루트 포스
    python 백준
    spring boot
    python 그리디 알고리즘
    jpa eager
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
seungyong20
[Python 알고리즘] 4796번 : 캠핑
상단으로

티스토리툴바