이해하는데 시간이 많이 걸렸습니당~ 이 문장을 가지고 규칙을 만들면
일단 처음 주어지는 쿠폰의 양은 치킨의 양과 같습니다!
그리고 쿠폰으로 치킨을 시키게 되면 쿠폰/10개의 치킨을 시킬 수 있습니다!
남은 쿠폰의 양은 쿠폰%10인 것도 알 수 있습니다!!
그럼 다음에 시킬 때 남는 쿠폰의 양은 쿠폰/10 + 쿠폰%10 입니다!!
처음에는 for문을 돌리려고 했는데 돌리는 횟수가 정해져 있지 않기 때문에 while문을 사용했고 조건식에는 더이상 쿠폰을 사용하지 못하는 경우인 coupon이 10보다 작은 경우로 정했습니다!! 즉 coupon>9
이를 토대로 코드를 짜게 되면
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int chicken) {
int answer = 0;
int coupon = chicken;
int order = 0, last = 0;
while(coupon>9){
order += coupon/10;
last = coupon%10;
coupon = coupon/10 + coupon%10;
}
return answer = order;
}
입니다!!
<코드 설명> chicken = 1081이라 가정
coupon = 1081, order = 0, last = 0
1번째 회전 => order = 108, last = 1, coupon = 109
2번째 회전 => order = 108 + 10, last = 9, coupon = 19
3번째 회전 => order = 108 + 10 + 1, last = 0, coupon = 10;
4번째 회전 => order = 108 + 10 + 1 + 1, last = 0, coupon = 1;
마지막에 coupon이 9보다 크지 않기 때문에 반복문을 탈출합니당~!
**
order += coupon/10;을 한 이유 : 새로운 변수를 선언할 수도 있지만 order에 더하는게 더 깔끔하당~ (개인적의견)
coupon이 coupon/10 + coupon%10인 이유 : coupon은 남은 쿠폰 말고도 치킨을 시켜서 받는 쿠폰도 있기 때문에 남는 쿠폰인 coupon%10과 시켜서 받은 쿠폰인 coupon/10을 더해줬당~~
어려웠찌만.. 성공! ♪(^∇^*)♪(^∇^*)
'코딩테스트' 카테고리의 다른 글
프로그래머스 - 배열 두 배 만들기 (0) | 2023.08.24 |
---|---|
프로그래머스 - 짝수의 합 (0) | 2023.08.02 |
프로그래머스 - 양꼬치 (0) | 2023.07.31 |
프로그래머스 - 제곱수 판별하기 (0) | 2023.07.26 |
프로그래머스 - 피자 나눠 먹기 (0) | 2023.07.25 |