[Programmers] Lv0 치킨 쿠폰 Java

2023. 2. 2. 19:40CS/자료구조 & 알고리즘

728x90

문제 출처

[프로그래머스 코딩 테스트 연습]

https://school.programmers.co.kr/learn/courses/30/lessons/120884

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 풀이

  • 이 문제는 재귀로 풀어보았다.
  • 최대 서비스 치킨의 수는 다음과 같이 얻을 수 있다.
    • 쿠폰의수가 있다면 쿠폰으로 산 치킨과 나머지 쿠폰으로 다음 쿠폰을 구할 수 있다.
    • 다음 쿠폰을 10으로 나눈 몫을 구하면 치킨 수가 나온다.
    • 치킨이 0이 될 때까지 반복하면 최대 서비스 수가 나온다.
    • 아래 그림은 1081개를 시켰을때 위 과정 변화를 그린 것이다.

1081개를 시켰을때 과정 변화(식 변화)

  • 위 그림을 재귀 코드로 나타내면 다음과 같다.

1081개를 시켰을때 과정 변화(재귀 코드 변화)

 

소스 코드

public class Solution {

    public int solution(int chicken) {
        if (chicken < 10)
            return 0;

        return chicken/10 + solution(chicken/10 + chicken%10);
    }
}
728x90