프로그래머스 - 치킨 쿠폰 - C++
https://school.programmers.co.kr/learn/courses/30/lessons/120884
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#include <string>
#include <vector>
using namespace std;
int solution(int chicken) {
int answer = 0;
int cnt=chicken;
while(cnt>=10)
{
answer+=cnt/10;
cnt = cnt % 10 + cnt/10;
}
return answer;
}
설명
지금까지 시켜먹은 치킨의 수가 chicken 에 들어있고 이를 통해서 서비스 받을 수 있는 치킨의 총 수를 구하는 문제이다.
서비스받는 치킨도 쿠폰이 발급되며 쿠폰 10장당 1마리가 서비스로 제공된다.
따라서
1. 현재 받을 수 있는 서비스 치킨의 수를 구한다.
2. 남은 쿠폰 수 + 서비스 치킨의 수를 구한다. => 남은 쿠폰의 총 개수
3. 다시 현재 받을 수 있는 서비스 치킨의 수를 구한다.
이 과정을 무한으로 반복하다가 쿠폰 개수가 10개 미만이 되면 더 이상 서비스를 받을 수 없게 된다.
cnt 변수로 현재 쿠폰의 개수를 저장하고 이 cnt변수가 10개미만이면 while문을 종료시킨다.
answer+=cnt/10;
cnt = cnt % 10 + cnt/10;
먼저 현재 받을 수 있는 서비스 치킨의 수는 cnt/10으로 구할 수 있다.
예를 들어, 99마리면 9마리의 서비스를 받는다. 이 수를 answer에 더한다.
그리고 쿠폰 9개가 남는다. 이는 cnt%10 으로 구할 수 있다.
서비스 받은 치킨의 수 만큼 쿠폰은 증가하고 이는 cnt/10 이다.
따라서 서비스를 받을 수 있는 만큼 받은 후, 쿠폰의 수는
cnt%10 + cnt/10 개 이다.
이를 while문으로 반복하면 결과적으로 answer에 답이 저장된다.