코딩테스트 연습/프로그래머스 LV.0

[프로그래머스] Lv.0 치킨 쿠폰 - 자바(Java)

5ein 2024. 4. 18. 23:00

문제: 코딩테스트 연습 - 치킨 쿠폰 | 프로그래머스 스쿨 (programmers.co.kr)

문제설명

프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다. 

쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다. 

시켜먹은 치킨의 수 chicken이 매개변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 return하도록 solution 함수를 완성해주세요.


제한사항

  • chicken은 정수입니다.
  • 0 ≤ chicken ≤ 1,000,000

입출력 예

chicken result
100 11
1,081 120

나의 문제 풀이

class Solution {
    public int solution(int chicken) {
        int coupon = chicken;
        int service = 0;
        while (coupon >= 10) {
            service += coupon / 10;
            coupon = coupon % 10 + coupon / 10;
        }
        return service;
    }
}

다른 사람의 문제풀이

class Solution {
    public int solution(int chicken) {
        int answer = chicken/9;
        if(chicken>1&&chicken%9==0){
            answer--;
        }
        return answer;
    }
}

느낀점

다른사람의 문제풀이가 너무 짧아서 너무 놀랬다! 짧은 코들르 다른분이 댓글에 해석을 해주셨다!!

해석: 

닭 10마리 중 한마리는 공짜 == 9마리를 주문하면 한마리를 공짜로 얻음 == 9 / 9 = 1

다만 첫 주문시에는 10마리 값을 모두 지불해야 공짜 닭을 받을 수 있기 때문에, 9로 딱 나누어 떨어질 경우 마지막 한마리 값을 더 지불해야 합니다.

또 한마리도 시켜먹지 않았을 경우에도 받을 수 없는 공짜 닭이 없어 if조건에서 true를 반환받기 때문에 조건에서 제외해주어야 합니다.


문제 출처: 코딩테스트 연습 | 프로그래머스 스쿨 (programmers.co.kr)