
내가 생각했을때 문제에서 원하는부분
프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다.
쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다.
시켜먹은 치킨의 수 chicken이 매개변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 return하도록 solution 함수를 완성해주세요.
내가 이 문제를 보고 생각해본 부분
Main147 main = new Main147();
클래스의 기능을 사용하기 위해 객체를 생성하는 코드이다.
int result1 = main.solution(100);
solution 메서드에 100을 넣고 결과를 계산한 뒤 변수에 저장한다.
System.out.println(result1);
계산된 결과값을 콘솔창에 출력한다.
int answer = 0;
우리가 최종적으로 얻게 되는 서비스 치킨의 총 마릿수를 저장하고 누적할 변수이다.
int coupons = chicken;
현재 가지고 있는 쿠폰의 개수이며, 처음 시작할 때는 주문한 치킨의 수와 같다.
while (coupons >= 10)
쿠폰이 10장 이상 남아 있는 동안만 계속해서 서비스를 받을 수 있도록 반복문을 실행한다.
int service = coupons / 10;
현재 가진 쿠폰을 10으로 나누어 이번에 받을 수 있는 서비스 치킨의 마릿수를 계산한다.
answer += service;
지금까지 받은 총 서비스 치킨 수에 방금 구한 서비스 마릿수를 더해서 누적한다.
coupons = service + (coupons % 10);
다음 반복을 위해 쿠폰을 새롭게 갱신한다.
서비스 치킨이 새로 준 쿠폰(service)과 10장 미만으로 남은 나머지 쿠폰(coupons % 10)을 합쳐서 다음 바퀴에 사용한다.
return answer;
쿠폰이 10장 미만이 되어 반복문이 종료된 후, 최종적으로 완성된 서비스 치킨의 총 마릿수를 반환한다.
코드로 구현
class Solution {
public int solution(int chicken) {
int answer = 0;
int coupons = chicken;
while (coupons >= 10) {
int service = coupons / 10;
answer += service;
coupons = service + (coupons % 10);
}
return answer;
}
}
프로그래머스 코드
package programmers.programmers2;
// 프로그래머스 치킨 쿠폰
public class Main147 {
public static void main(String[] args) {
Main147 main = new Main147();
// 테스트 케이스 실행 및 결과 출력
int result1 = main.solution(100);
int result2 = main.solution(1081);
System.out.println(result1);
System.out.println(result2);
}
public int solution(int chicken) {
int answer = 0;
int coupons = chicken;
while (coupons >= 10) {
int service = coupons / 10;
answer += service;
coupons = service + (coupons % 10);
}
return answer;
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.