본문 바로가기
프로그래머스/[프로그래머스 - JAVA] Lv.0

[프로그래머스 - JAVA] 치킨 쿠폰

by 코딩하는 흰둥이 2023. 3. 16.


입출력 예 설명
입출력 예 #1

  • 100마리를 주문하면 쿠폰이 100장 발급되므로 서비스 치킨 10마리를 주문할 수 있습니다.
  • 10마리를 주문하면 쿠폰이 10장 발급되므로 서비스 치킨 1마리를 주문할 수 있습니다.
  • 따라서 10 + 1 = 11을 return합니다.

 

입출력 예 #2

  • 1081마리를 주문하면 쿠폰이 1081장 발급되므로 서비스 치킨 108마리를 주문할 수 있습니다. 그리고 쿠폰이 1장 남습니다.
  • 108마리를 주문하면 쿠폰이 108장 발급되므로 서비스 치킨 10마리를 주문할 수 있습니다. 그리고 쿠폰이 8장 남습니다.
  • 10마리를 주문하면 쿠폰이 10장 발급되므로 서비스 치킨 1마리를 주문할 수 있습니다.
  • 1마리를 주문하면 쿠폰이 1장 발급됩니다.
  • 가지고 있는 쿠폰이 총 10장이므로 서비스 치킨 1마리를 추가로 주문할 수 있습니다.
  • 따라서 108 + 10 + 1 + 1 = 120 을 return합니다.

 


  • 내 풀이
class Solution {
    public int solution(int chicken) {
        
        int answer = -1;
        // 왜 -1로 해둔지 모르겠으나...0으로 초기화 시킴
        answer = 0;
        // 치킨 1마리당 쿠폰 1장이기 때문에 치킨마리 수 만큼 초기화
        int coupon = chicken;

        while(coupon >= 10){
        // 처음 루프엔 쿠폰의 값이 치킨 마리 수와 같음 그래서 쿠폰 / 10 은 치킨 / 10 임
        // 10마리 당 서비스 쿠폰이 1장이기 때문에 남은 쿠폰 값을 구한다.
            answer += coupon / 10; // 예) 1081 / 10
            coupon = (coupon / 10) + (coupon % 10); (1081 / 10) + (1081 % 10) -> 108 + 1
        }
        return answer;
    }
}

처음에 서비스 치킨 따로 쿠폰 따로 남은 쿠폰 따로 해서 총 치킨을 구하려고 하다보니

머리만 복잡해지고 코드가 자꾸 엉켜서 몇시간 동알 작성했다 지웠다만 반복하였다

힌트를 얻을 까 싶어서 질문하기를 보니 루프를 돌면서 그때그때마다 쿠폰과 서비스 치킨을 적용해줘야 한다고 해서

무작정 단순하게 , 어렵게 생각안하려고 짜보다보니 운이 좋게 짜진거 같다....

 

 

  • 다른 사람 풀이
class Solution {
    public int solution(int chicken) {
        int answer = chicken/9;
        if(chicken>1&&chicken%9==0){
            answer--;
        }
        return answer;
    }
}

이렇게 간단하게...?

댓글