개발 낙서장

[프로그래머스][수학][JAVA] 콜라 문제 본문

Algorithm/Programmers

[프로그래머스][수학][JAVA] 콜라 문제

권승준 2023. 12. 28. 10:13

문제 제목

https://school.programmers.co.kr/learn/courses/30/lessons/132267

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이 방법

이건 알고리즘이라기보단 수학 문제가 맞는 것 같다.😅

콜라병 n개가 있고 마트에서는 a개당 b개의 새 콜라를 준다고 한다.
콜라는 전부 마시는 것을 전제로 하기 때문에 새 콜라 또한 결국 빈 콜라병이 된다.
따라서 계속 나누면서 해답을 찾아나가면 된다.

예를 들어 현재 15개의 콜라병을 갖고 있는데 마트에선 3개당 2개의 새 콜라를 준다고 해보자.

  1. 15개를 내고 10개의 콜라병을 받는다.
  2. 10개 중 9개의 콜라병을 내고 6개의 콜라병을 받으니 7개가 된다.
  3. 7개 중 6개의 콜라병을 내고 4개의 콜라병을 받으니 5개가 된다.
  4. 5개 중 3개의 콜라병을 내고 2개의 콜라병을 받으니 3개가 된다.
  5. 마지막으로 3개의 콜라병을 내 2개의 콜라병을 받는다.

그럼 총 10 + 6 + 4 + 2 + 2 = 24개의 콜라병을 받게 된다.

소스 코드

더보기
class Solution {
    public int solution(int a, int b, int n) {
        int answer = 0;
        
        while(n >= a) {
            answer += (n / a) * b;
            
            n = (n / a) * b + n % a;
        }
        
        return answer;
    }
}
Comments