[프로그래머스] 코딩 테스트 연습 - 치킨 쿠폰(Java)

수경·2022년 12월 1일
2

problem solving

목록 보기
68/174

프로그래머스 - 치킨 쿠폰

풀이

  • 치킨 1마리 당 쿠폰 1개
  • 처음 쿠폰의 개수 = 치킨 마리 수
  • 쿠폰 10장 당 서비스 치킨 1마리
    ➡️ 10으로 나눔
    ➡️ 남은 쿠폰이 10장 미만일 때 까지(10장 미만이면 못시키니까)
  • 만약 쿠폰이 19장이라면, 10장으로 1마리를 받고 9장이 남음
    ➡️ 남은 9장을 저장해야됨!

삽질

처음에는 남은 쿠폰을 따로 저장해서 쿠폰을 모두 사용했을 경우 남은 쿠폰을 따로 while문을 돌려서 나눠줬다. 이때 9번 케이스를 통과하지 못했음.. 치킨을 1999마리 시킨 경우인데,,, 222가 정답인데 221을 반환했다.

처음 풀이

n쿠폰서비스 치킨남은 쿠폰총 남은 쿠폰총 치킨
11999 장199 마리9 장9 장199 마리
2199 장19 마리9 장18 장218 마리
319 장1 마리9 장27 장219 마리
4남은 쿠폰 27 장2 마리7 장7 장221 마리

이런식으로 남은 쿠폰을 모아서 한 번에 while로 돌려서 풀었다...... 근데 이게 아님!!

n쿠폰서비스 치킨남은 쿠폰총 남은 쿠폰총 치킨
11999 장199 마리9 장208 장199 마리
2208 장20 마리8 장28 장219 마리
328 장2 마리8 장10 장221 마리
410 장1 마리0 장0 장222 마리

이렇게 그때그때 남은 쿠폰을 합쳐서 풀어야 한다!......................

어쩐지.... while문 두 번 돌리는 거 엄청나게 마음에 안 들더라,,,,,,

암튼 해결!

이거 해결하고 못풀었던 콜라 문제도 풀었다! 예에에🥳


코드

public class ChickenCoupon {
	public int solution(int chicken) {
		int coupon = chicken;
		int count = 0;

		while (coupon >= 10) {
			int leftCoupon = coupon % 10;
			count += coupon / 10;
			coupon = leftCoupon + coupon / 10;
		}
		return count;
	}

	public static void main(String[] args) {
		ChickenCoupon chickenCoupon = new ChickenCoupon();
		System.out.println(chickenCoupon.solution(100));    // 11
		System.out.println(chickenCoupon.solution(1081));    // 120
		System.out.println(chickenCoupon.solution(1999));    // 222
	}
}
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글