백준 4796 | 그리디 | 캠핑 [파이썬 python]

2023. 4. 26. 18:30·Algorithm/백준
 

4796번: 캠핑

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

www.acmicpc.net

 

코드

i = 1
while True:
    l, p, v = map(int, input().split())
    if p==0 and l==0 and v==0: # 0, 0, 0이 입력되면 반복문 종료
        break
        
    camping = (l * (v // p)) + min((v % p), l) # 캠핑장을 사용할 수 있는 최대 일수
    print('Case {}:'.format(i), camping)
    i += 1

쉬운 문제인 줄 알고 달려들었다가 '틀렸습니다!'를 계속 만나게 되었다.

그 이유는 camping을 구하는 식에 있다.

 

먼저, l=5, p=8, v=17인 경우를 살펴보면 다음과 같다.

캠핑장에서 최대 머무를 수 있는 일 수는 camping = l * (v // p) + (v % p)로 구할 수 있다.

 

하지만, l=3, p=8, v=20인 경우에는 위 camping 식으로 구할 수 없다.

이 경우를 위에서 구한 camping 식으로 구하면 10일이 나오기 때문에 오답이다.

16일 이후를 살펴보면, 남은 휴가는 4일이다.

하지만, 캠핑장은 연속으로 3일(=L)만 이용 가능하므로 3일만 머물러야 한다.

그러므로 캠핑장에 머무를 수 있는 최대 일 수는 9일이 된다.

 

camping = l * (v // p) + (v % p) 식에서 (v % p) 부분만 수정하면 모든 경우에 적용시킬 수 있다.

2번째 경우는 v % p보다 l이 작으므로, 이럴 때는 v % p가 아닌 l를 선택하면 되는 것이다.

반대로, l보다 v % p가 작으면,  v % p를 선택해 계산해 주면 된다.

camping = (l * (v // p)) + min((v % p), l) # 캠핑장을 사용할 수 있는 최대 일수

두 값 중 작은 값을 선택할 수 있도록 min 함수를 사용하면 된다.

저작자표시 (새창열림)
'Algorithm/백준' 카테고리의 다른 글
  • 백준 11724 | DFS / BFS | 연결 요소의 개수 [파이썬 python]
  • 백준 2810 | 그리디 | 컵홀더 [파이썬 python]
  • 백준 2805 | 이진탐색 | 나무 자르기 [파이썬 python]
  • 백준 1920 | 이진탐색 | 수 찾기 [파이썬 python]
dduniverse
dduniverse
  • dduniverse
    dduniverse
    dduniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (245)
      • Algorithm (123)
        • 알고리즘 이론 (8)
        • 백준 (19)
        • 프로그래머스 (83)
        • 구름 알고리즘 먼데이 챌린지 (13)
      • 빅데이터분석기사 (10)
        • 통계 (4)
        • 실기 (6)
      • KT에이블스쿨 (26)
      • FrontEnd (11)
        • React (5)
        • 기타 (6)
      • BackEnd (18)
        • Django (15)
        • Spring (3)
      • DS & ML (11)
        • Machine Learning (9)
        • Kaggle (2)
      • TIL (46)
        • python (22)
        • javascript (3)
        • 오류해결 (10)
        • 기타 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 관리
    • 글쓰기
  • 링크

  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
dduniverse
백준 4796 | 그리디 | 캠핑 [파이썬 python]
상단으로

티스토리툴바