[3코1파] #01. Lv1 콜라 문제

gunny·2023년 1월 4일
0

코딩테스트

목록 보기
1/530

3명의 안드로이드 개발자와 1명의 파이썬 개발자의 코딩 테스트 서막 : 3코1파

Rule :

하루에 1문제씩 풀기.
한 문제당 30분씩은 고민하기.
왜 그렇게 풀었는지 공유하기.
하루라도 놓친다면 벌금은 1,000원

START :

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를 곱하는 형식으로 한 줄로 끝냈다..

저사람 머리 압수

profile
꿈꾸는 것도 개발처럼 깊게

2개의 댓글

comment-user-thumbnail
2023년 1월 4일

화이팅~!

1개의 답글