holy's story
[백준 알고리즘] 4796 - 캠핑 본문
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))
캠핑장 이용일수를 계산하는 데에서 자꾸 실수가 생겼다.
먼저 남은 일수가 이용가능 일수보다 큰 경우를 생각하지 못했고, 이후에는 답을 보고 틀렸다는 생각을 하지 못해서 돌고 돌았다.
개선 방법
다른 문제를 풀다가 돌아와서 차분하게 계산식을 세워보았다.