목차
문제 설명
프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다. 쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다. 시켜먹은 치킨의 수 chicken이 매개변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 return하도록 solution 함수를 완성해주세요.
제한사항
- chicken은 정수입니다.
- 0 ≤ chicken ≤ 1,000,000
chicken | result |
---|---|
100 | 11 |
1,081 | 120 |
class Solution {
public int solution(int chicken) {
int totalService = 0; // 총 서비스 치킨 수
int coupons = chicken; // 초기 쿠폰 수는 주문한 치킨 수와 동일
while (coupons >= 10) {
int service = coupons / 10; // 서비스 치킨 수 계산
totalService += service; // 총 서비스 치킨 수에 추가
coupons = coupons % 10 + service; // 남은 쿠폰과 새로 얻은 쿠폰 계산
}
return totalService; // 총 서비스 치킨 수 반환
}
}
코드 동작 설명
1.초기화:
int totalService = 0; // 총 서비스 치킨 수
int coupons = chicken; // 초기 쿠폰 수는 주문한 치킨 수와 동일
- totalService: 총 서비스로 받은 치킨의 개수를 저장.
- coupons: 현재 보유한 쿠폰 수를 저장. 처음에는 주문한 치킨 수만큼 쿠폰이 있다.
2.반복문:
while (coupons >= 10) {
int service = coupons / 10; // 서비스 치킨 수 계산
totalService += service; // 총 서비스 치킨 수에 추가
coupons = coupons % 10 + service; // 남은 쿠폰과 새로 얻은 쿠폰 계산
}
- 조건: coupons가 10개 이상일 때만 서비스 치킨을 받을 수 있으므로, coupons >= 10 동안 반복.
- 서비스 치킨 계산: coupons / 10은 현재 보유 쿠폰으로 받을 수 있는 서비스 치킨의 수를 의미.
- 총 서비스 치킨 수 업데이트: totalService에 이번에 받은 서비스 치킨 수를 더함.
- 쿠폰 업데이트: 현재 보유 쿠폰에서 사용된 쿠폰 수를 제외한 나머지(coupons % 10)와 새로 발급된 쿠폰(service)을 합산.
728x90
'JAVA > 프로그래머스 코딩테스트 입문' 카테고리의 다른 글
[프로그래머스, LV.0] 문자열 밀기 (0) | 2024.12.14 |
---|---|
[프로그래머스, LV.0] 유한소수 판별하기 (0) | 2024.12.14 |
[프로그래머스, LV.0] 등수 매기기 (2) | 2024.12.14 |
[프로그래머스 LV.0] 종이 자르기 (0) | 2024.12.12 |
[프로그래머스, LV.0] 로그인 성공? (0) | 2024.12.12 |