Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

holy's story

[백준 알고리즘] 4796 - 캠핑 본문

카테고리 없음

[백준 알고리즘] 4796 - 캠핑

soom22 2023. 7. 16. 18:35
import sys
input = sys.stdin.readline

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

    else:
        if V % P > L:
            print("Case " + str(i) + ": " + str(V//P*(L)+L))
        else:
            print("Case " + str(i) + ": " + str((V//P*L)+ V%P))

떠올린 접근 방식, 과정

일단 전체 캠핑장 이용 시간을 구하기 위해 V//P*L +V%P를 해주면 될 것 같다.

0 0 0이 입력되면 빠져나와야하기 때문에 while문을 사용하여 감싸주고, if문에서 셋 다 0일 경우 break로 while문을 빠져나오도록 만들었다.

해당 접근 방식에 쓰이는 알고리즘과 판단 사유

완전탐색, 리스트를 한번 다 도니깐

접근법의 총 시간복잡도

while문 한번 도는거라 O(n)이 아닐까!

(에러 오류가 발생했다면) 해결 과정

더보기
case=[]


while True :
    L, P, V=list(map(int, input().split()))
    if L and 0 and P==0 and V==0:
        break
    else:
        case.append([int(L),int(P),int(V)])
        result= V%P + V//P*L
        i=0
        i+=1
        print("Case " + str(i) +": " + str(result))
import sys
input = sys.stdin.readline

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

    else:
        if V % P > L:
            print("Case " + str(i) + ": " + str(V // P * L + V % P // L * L))
        else:
            print("Case " + str(i) + ": " + str(V // P * L + V % P))

캠핑장 이용일수를 계산하는 데에서 자꾸 실수가 생겼다.

먼저 남은 일수가 이용가능 일수보다 큰 경우를 생각하지 못했고, 이후에는 답을 보고 틀렸다는 생각을 하지 못해서 돌고 돌았다.

개선 방법

다른 문제를 풀다가 돌아와서 차분하게 계산식을 세워보았다.