내 코드
def solution(a, b, n): answer = 0 while n >= a: answer += n//a*b n = n//a*b + n%a return answer
+9
테스트 1 〉 통과 (0.01ms, 10.4MB)
테스트 2 〉 통과 (0.00ms, 10MB)
테스트 3 〉 통과 (0.01ms, 10.1MB)
테스트 4 〉 통과 (0.00ms, 10.2MB)
테스트 5 〉 통과 (0.01ms, 10.2MB)
테스트 6 〉 통과 (0.00ms, 10.2MB)
테스트 7 〉 통과 (0.00ms, 10.2MB)
테스트 8 〉 통과 (0.00ms, 10.2MB)
테스트 9 〉 통과 (0.01ms, 10.1MB)
테스트 10 〉 통과 (0.00ms, 10.1MB)
테스트 11 〉 통과 (0.00ms, 10.1MB)
테스트 12 〉 통과 (0.43ms, 10.1MB)
테스트 13 〉 통과 (0.00ms, 10.1MB)
테스트 14 〉 통과 (0.00ms, 10MB)
다른 풀이
solution = lambda a, b, n: max(n - b, 0) // (a - b) * b
테스트 1 〉 통과 (0.00ms, 10.2MB)
테스트 2 〉 통과 (0.00ms, 10.2MB)
테스트 3 〉 통과 (0.00ms, 10MB)
테스트 4 〉 통과 (0.00ms, 10.1MB)
테스트 5 〉 통과 (0.00ms, 10.1MB)
테스트 6 〉 통과 (0.00ms, 10.2MB)
테스트 7 〉 통과 (0.00ms, 10.2MB)
테스트 8 〉 통과 (0.00ms, 10.1MB)
테스트 9 〉 통과 (0.00ms, 10.2MB)
테스트 10 〉 통과 (0.00ms, 10.2MB)
테스트 11 〉 통과 (0.00ms, 10MB)
테스트 12 〉 통과 (0.00ms, 10.1MB)
테스트 13 〉 통과 (0.00ms, 10.1MB)
테스트 14 〉 통과 (0.00ms, 10MB)
한꺼번에 계산하지 않고 a개만 팔고 b개를 받는 과정은 결국 a-b 개씩 병을 소비하는 것으로 생각, 첫번째 진행할 때는 a개만 소비되기 때문에, b만큼 못받음(-b), 그 조건을 먼저 계산 n-b 반복횟수는 n-b // (a-b) 여기에 받는 병수 b 곱한 것
...?
나중에 머리 잘 돌아갈 때 다시 봐야겠다...