이런 다항식을 만드는 문제는 Lv0 에서도 비슷한 문제가 있었는데 단순한것 같으면서도 상당히 헷갈린다. 그래도 이번엔 수월하게 했는데 테스트때도 당황 하지 않고 잘 해내려면 좀더 연습이 필요할 것 같다
def solution(a, b, n):
ans = (n // a) * b
total = (n // a) * b + n % a
while(True):
ans += (total // a) * b
total = (total // a) * b + total % a
if(total < a): break
return ans
ans에는 빈 콜라병으로 얻은 콜라를 누적해서 쌓아준다.
total은 남아있는 빈병의 수로 처음 n값을 이용해서 초기값을 설정해주고
그 이후부터 while loop 으로 a(바꾸주는 빈병 수:unit)보다 total의 값이 작아 더이상 콜라를 더 얻을 수 없을 때 빠져나오게 된다.
def solution(a, b, n):
ans = (n // a) * b
total = (n // a) * b + n % a
while(total >= a):
now = (total // a) * b
ans += now
total = now + total % a
return ans
두가지를 고쳐보았다.
1. while(total >= a)으로 바꿔서 break를위한 if조건문을 안써도 됨
2. now = (total // a) * b 라는 지역변수 만들어주기
이 계산을 두번 반복하게 되어서 아예 그 값을 now에 저장하고 두번 사용하게 하였다
solution = lambda a, b, n: (n - b) // (a - b) * b
첫 제출 | 보완 | 한줄 코딩 | |
---|---|---|---|
테스트 1 〉 | 통과 (0.01ms, 10.3MB) | 통과 (0.01ms, 10.1MB) | 통과 (0.00ms, 10.1MB) |
테스트 2 〉 | 통과 (0.00ms, 10.1MB) | 통과 (0.00ms, 10.2MB) | 통과 (0.00ms, 10MB) |
테스트 3 〉 | 통과 (0.01ms, 10.2MB) | 통과 (0.01ms, 10.3MB) | 통과 (0.00ms, 10.2MB) |
테스트 4 〉 | 통과 (0.00ms, 10.1MB) | 통과 (0.00ms, 10.1MB) | 통과 (0.00ms, 10.2MB) |
테스트 5 〉 | 통과 (0.00ms, 10.3MB) | 통과 (0.00ms, 10.1MB) | 통과 (0.00ms, 10.1MB) |
테스트 6 〉 | 통과 (0.00ms, 10MB) | 통과 (0.00ms, 10.1MB) | 통과 (0.00ms, 9.96MB) |
테스트 7 〉 | 통과 (0.00ms, 10.1MB) | 통과 (0.00ms, 9.99MB) | 통과 (0.00ms, 10.1MB) |
테스트 8 〉 | 통과 (0.00ms, 10.2MB) | 통과 (0.00ms, 9.92MB) | 통과 (0.00ms, 10.1MB) |
테스트 9 〉 | 통과 (0.00ms, 10.2MB) | 통과 (0.00ms, 10.1MB) | 통과 (0.00ms, 10.1MB) |
테스트 10 〉 | 통과 (0.00ms, 10.1MB) | 통과 (0.00ms, 10.3MB) | 통과 (0.00ms, 10MB) |
테스트 11 〉 | 통과 (0.00ms, 10.3MB) | 통과 (0.00ms, 9.93MB) | 통과 (0.00ms, 10MB) |
테스트 12 〉 | 통과 (0.46ms, 10.3MB) | 통과 (0.32ms, 10.1MB) | 통과 (0.00ms, 10.2MB) |
테스트 13 〉 | 통과 (0.00ms, 10.3MB) | 통과 (0.00ms, 10.2MB) | 통과 (0.00ms, 10.2MB) |
테스트 14 〉 | 통과 (0.00ms, 10.2MB) | 통과 (0.00ms, 10.1MB) | 통과 (0.00ms, 10.1MB) |