하루에 1문제씩 풀기.
한 문제당 30분씩은 고민하기.
왜 그렇게 풀었는지 공유하기.
하루라도 놓친다면 벌금은 1,000원
2023.01.04
프로그래머스 LV1.
콜라문제
https://school.programmers.co.kr/learn/courses/30/lessons/132267
문제 요약
콜라를 받기 위해 마트에 주어야 하는 병 수 a, 빈 병 a개를 가져다 주면 마트가 주는 콜라 병 수 b, 상빈이가 가지고 있는 빈 병의 개수 n이 매개변수로 주어집니다. 상빈이가 받을 수 있는 콜라의 병 수를 return 하도록 solution 함수를 작성해주세요.
문제 풀이
별 큰 로직없이 계산식만 구해서 코드로 작성하면 되는 문제고,
아래의 입출력 예 설명 2에서 그냥 푸는 방법을 그대로 설명해놔서
해당 프로세스를 코드화만 하면 되는 아주 단순한 문제
어떤 수가 들어왔을 때 몫을 이용한 풀이로 풀었음
조건문은 for, while 중에서 지속적으로 남은 콜라를 확인해야 하기 때문에
while을 사용하였고 while 멈추는 조건은 남은 콜라의 수로 체킹함
코드 공유
def solution(a, b, n):
answer = 0
cola = 0
while n>=a:
quotient = n//a
cola = quotient*b
n = n+cola-(quotient*a)
answer += cola
return answer
클리어 증빙
다른 사람 풀이
나는 역시 코드로 스토리텔링을 하는 코드스토리텔러인데
한 괴물은 lambda를 이용해 한 줄로 풀었다(이 새럼 뭐지? 재수없어)
=> 아래 친절한 자가 말하기를
한꺼번에 계산하지 않고 a개만 팔고 b개를 받는 과정은 결국 a-b개씩
병을 소비하는 것으로 생각해서, 첫번째 진행할 때는 a개만 소비되기 때문에 b만큼 못받음(-b) 그래서, 그 조건만 먼저 계산(n-b) 반복횟수는 n-b//(a-b)로 하여 여기에 받는 병의 b를 곱하는 형식으로 한 줄로 끝냈다..
저사람 머리 압수
화이팅~!