프로그래머스 Level1 콜라 문제 (Java)

한승현·2023년 1월 6일
0

programmers

목록 보기
11/22
  • https://school.programmers.co.kr/learn/courses/30/lessons/132267
  • 문제
    • 빈 병을 가져다 주면 콜라를 교환해주는 가게가 있다.
    • 콜라를 마시면 빈 병이 된다.
    • a개의 빈병을 주면 b개의 콜라를 준다.
    • 처음에 가지고 있는 빈 병의 수 n개가 주어진다.
    • 가게로 부터 받는 콜라의 수를 구하시오.
  • 제한사항
    • 1 ≤ b < a ≤ n ≤ 1,000,000
    • 정답은 항상 int 범위를 넘지 않게 주어집니다.
  • 코드
    class Solution {
        public int solution(int a, int b, int n) {
            int answer = 0;
            while(n >= a){
                int cur = (n/a)*b;
                answer += cur;
                n = n%a+cur;
            }
            return answer;
        }
    }
  • 풀이
    • 단순 구현 문제다. 주의해야 할 점은 n의 크기가 백만인데, a의 크기가 최소 2 이상이므로 크기에 비해 반복하는 횟수가 적음을 알 수 있다.
    • 또한 유명한 문제라 문제를 안읽고 구현하면 b병을 반환하는 것인데 1병으로 계산할 위험성이 있다.
      • 원래 문제는 2병의 빈병을 주면 1병의 콜라를 주는 문제로 엄청 유명함
profile
사람을 만족시켜줄 수 있는 개발자

0개의 댓글