콜라 문제

Kylie·2022년 12월 26일

프로그래머스 Lv.1

목록 보기
57/69

내 코드

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 곱한 것

...?
나중에 머리 잘 돌아갈 때 다시 봐야겠다...

profile
딥린이

0개의 댓글