치킨 쿠폰

nacSeo (낙서)·2024년 5월 20일
0

프로그래머스

목록 보기
169/169

문제 설명

프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다. 쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다. 시켜먹은 치킨의 수 chicken이 매개변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 return하도록 solution 함수를 완성해주세요.

제한사항

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

나의 코드

class Solution {
    public int solution(int chicken) {
        int answer = 0;
        while(chicken>9) {
            chicken -= 10;
            chicken++;
            answer++;
        }
        return answer;
    }
}

다른 사람 코드

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를 반환받기 때문에 조건에서 제외해주어야 합니다.

class Solution {
    public int solution(int chicken) {
        int answer = 0;
        while (chicken >= 10){
            int service = chicken / 10;
            int nmg = chicken %  10;

            chicken = service + nmg;

            answer += service;

        }


        return answer;
    }
}

느낀 점

chicken이 9보다 작아질 때까지 10개씩 빼주고, 서비스 치킨도 쿠폰 발급에 포함되므로 1을 더해주고, 서비스 치킨 숫자를 1씩 올려주면서 해결하였다.
다른 사람 코드와 같이 논리적으로 해석해서 풀 수도 있고, 정석처럼 푸는 방법도 존재한다.

profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글