문제 링크 : https://www.acmicpc.net/problem/4796
문제 아이디어는 그리디로 생각하면 어렵지 않았다. 그런데 왠지모를 오답이 자꾸 나서 고민을 많이 했는데, 좋은걸 얻어가는 것 같다. 앞으로 % 연산을 사용할 때는 항상 나머지 처리에 대해서 고려해봐야 겠다.
import sys i = 1 while True: L, P, V = map(int, sys.stdin.readline().split()) if L == 0 and P == 0 and V == 0: break answer = "Case "+str(i)+": "+str( (V//P)*L + (V%P) ) print(answer) i += 1
맞았다고 생각했지만, V % P 가 L 보다 큰 경우 반례가 생겼다. 극단적으로 L = 1, P= 1000 이고 V % P 는 999 인 경우 나머지에서 1만 추가해야하는데 999를 추가하게 된다.
import sys i = 1 while True: L, P, V = map(int, sys.stdin.readline().split()) if L == P == 0 == V: break if (V%P) < L: answer = "Case "+str(i)+": "+str( (V//P)*L + (V%P) ) print(answer) else: answer = "Case "+str(i)+": "+str( (V//P)*L + L ) print(answer) i += 1