문제
1673번: 치킨 쿠폰
강민이는 치킨 한 마리를 주문할 수 있는 치킨 쿠폰을 n장 가지고 있다. 이 치킨집에서는 치킨을 한 마리 주문할 때마다 도장을 하나씩 찍어 주는데, 도장을 k개 모으면 치킨 쿠폰 한 장으로 교환
www.acmicpc.net
문제
강민이는 치킨 한 마리를 주문할 수 있는 치킨 쿠폰을 n장 가지고 있다. 이 치킨집에서는 치킨을 한 마리 주문할 때마다 도장을 하나씩 찍어 주는데, 도장을 k개 모으면 치킨 쿠폰 한 장으로 교환할 수 있다.
강민이가 지금 갖고 있는 치킨 쿠폰으로 치킨을 최대 몇 마리나 먹을 수 있는지 구하여라. 단, 치킨을 주문하기 위해서는 반드시 치킨 쿠폰을 갖고 있어야 한다.
입력
여러 줄에 걸쳐서 자연수 n과 k가 주어진다.
출력
각 입력마다 한 줄에 정답을 출력한다.
제한
- 1 < k ≤ n ≤ 1,000,000,000
예제 입력 1 복사
4 3
10 3
100 5
예제 출력 1 복사
5
14
124
출처
ICPC > Regionals > North America > Rocky Mountain Regional > Alberta Collegiate Programming Contest > ACPC 2000 D번
#include<stdio.h>
int main(){
int n, k, re, sum;
while(scanf("%d %d", &n, &k) != EOF){
if(k>1 && k <= n && n <= 1000000000){
sum = n;
while(n>=k){
re = n % k;
n = n / k;
sum += n;
n += re;
}
printf("%d\n", sum);
}
}
}
풀다보니 계속 틀려서 문제를 계속 봤습니다. 난이도에 비해 정답률이 엄청 저조하더라구요.
EOF 문제에 + 제약 조건설정 + 자잘한 함정(?)이 있었습니다.
while문에서 scanf을 받고 받은 값이 EOF인지 1차 적으로 검사를 합니다.
그 다음 제약 조건에 따라서 if(k>1 && k <= n && n <= 1000000000)로 설정하여 2차 검사를 실행합니다.
이후에는 n마리의 치킨을 주문하고, 추가로 받은 쿠폰을 통해 치킨을 계속 주문할 수 있는 것인데,
추가로 시키고 남은 쿠폰은 버려지지 않고 남아 있는 점에 있습니다.주문하고나서 남을 쿠폰을 re 변수에 잠시 저장하고, n값에 따라 추가로 k 개로 나누어 치킨을 주문합니다.추가 주문된 치킨의 수는 계속해서 sum에 누적을하고 이후 n값에 남아있던 쿠폰을 더해줍니다.
Git Hub
BaekJoon-Study/1673 : 치킨쿠폰.c at C · GUuu9/BaekJoon-Study (github.com)
GitHub - GUuu9/BaekJoon-Study
Contribute to GUuu9/BaekJoon-Study development by creating an account on GitHub.
github.com
'백준 코드 공부 > C언어' 카테고리의 다른 글
백준 5596 : 시험점수 (C언어) (0) | 2021.12.13 |
---|---|
백준 1267 : 핸드폰 요금 (C언어) (0) | 2021.12.11 |
백준 9012 : 괄호 (C언어) (0) | 2021.12.05 |
백준 10872 : 팩토리얼 (C언어) (0) | 2021.12.05 |
백준 1259 : 팬릴드롬수 (C언어) (0) | 2021.12.05 |