[python_파이썬_pass]프로그래머스_LV1_콜라 문제_풀이
2024. 5. 14. 12:44ㆍ코드리뷰
728x90
반응형
공부하는허딩크 : https://www.youtube.com/live/d04PXaSTIlQ?feature=shared
처음에 이 문제를 만났을때 지문도 길고 복잡할 것 같다는 생각이 들어서 다른 문제로 도망쳤다.
그리고 백준에서 조금 경험을 쌓고 티어 실버 2를 만들고 다시 문제를 찾았다.
어차피 풀어야 할 거 다시 마음 먹고 도전했다.
<첫번째 시도 : 예제는 통과되었으나 7.1점으로 실패>
.혼자 고민한 결과 변수 b를 적용하지 않는 코드였다. 그래서 예제는 통과되었으나 제출시 통과를 못했다.
#b를 활용하지 못함
def solution(a, b, n):
answer = 0
while n >= a:
answer += n // a
m = n % a
n = (n // a) + m
return answer
<두번째 시도 : 통과>
def solution(a, b, n):
answer = 0
while n >= a:
answer += n // a * b
m = n % a
n = (n // a) * b + m
return answer
천천히 문제를 보면서 고민을 하면서 수학적 규칙을 발견했다.
1. answer에는 빈병으로 받을 수 있는 새로운 콜라를 계속해서 더해준다.
2. m에는 빈병을 남겨준다.
3. n에는 새로운 콜라가 어차피 빈병이 될 것이므로 새로운 빈병 기존 빈병을 해서 n이 a보다 작아질때 까지 반복하면
최종 얻을 수 있는 콜라의 개수가 나온다.
<다른사람 풀이 참고>
고민했던 내가 바보가 된 느낌이다.
1. 처음 주어진 빈병 n에 계속 a를 빼준다.
2. a가 빠지면서 새로운 콜라 b만큼 생기기 때문에 answer += b로 계속 더해준다.
3. 새로운 콜라 b가 다시 빈병이 됨으로 n에 더해준다. 이걸 계속 반복하면 n이 a보다 작아지는 시점에 최종 콜라의 개수가 나온다.
def solution(a, b, n):
answer = 0
while n >= a:
n -= a
answer += b
n += b
return answer
728x90
반응형
'코드리뷰' 카테고리의 다른 글
[python_파이썬_pass]프로그래머스_LV0_특이한 정렬_풀이 (0) | 2024.05.17 |
---|---|
[python_파이썬_pass]프로그래머스_LV1_명예의 전당(1)_풀이 (0) | 2024.05.16 |
[python_파이썬_pass]프로그래머스_LV1_푸드 파이트 대회_풀이 (0) | 2024.05.14 |
★[python_파이썬_시간복잡도 고민 중요]백준_2485번_가로수_풀이 (0) | 2024.05.13 |
[python_파이썬_Fraction함수]백준_1735번_분수 합_풀이 (0) | 2024.05.13 |