2020-09-19
문제
준민이는 탄산 음료를 좋아한다.
탄산 음료를 사느라 돈을 다 써버렸기 때문에,
이제 준민이는 가진 돈이 없어 탄산 음료를 사먹을 수 없다.
준민이는 항상 법을 지키며 사는 사람이기 때문에,
아무리 탄산 음료가 먹고 싶어도 훔치지 않는다.
따라서, 법적으로 문제가 없는 방법으로 탄산 음료를 구매할 것이다.
마침 빈 병을 특정 개수만큼 가져가면,
새 병으로 바꾸어주는 이벤트가 진행중이다.
준민이는 길에서 빈 병을 열심히 찾은 뒤,
탄산 음료를 먹으려고 한다.
준민이가 현재 가지고 있는 빈 병의 수와 길에서 발견한 빈 병의 수,
새 병으로 바꾸는데 필요한 빈 병의 수가 주어졌을 때,
준민이가 탄산 음료를 몇 개 먹을 수 있는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 준민이가 가지고 있는 빈 병의 수 e,
그날 발견한 빈 병의 수 f,
새 병으로 바꾸는데 필요한 빈 병의 개수 c가 주어진다.
(e < 1000, f < 1000, 1 < c < 2000)
e, f, c는 모두 음이 아닌 정수이다.
출력
첫째 줄에 준민이가 탄산 음료를 몇 개나 먹을 수 있는지를 출력한다.
소스코드
Scanner scan = new Scanner(System.in);
int Emptybottle = scan.nextInt();
int Getbottle = scan.nextInt();
int Needbottle = scan.nextInt();
int sum = Emptybottle + Getbottle;
int nmg = 0;
//그날 마신 빈병의 갯수가 저장되는 곳;
int count = 0;
//마실 수 있는 병수가 저장될 변수
while(true) {
while(sum >= Needbottle) {
sum = sum - Needbottle;
nmg++;
count++;
}
nmg = nmg + sum;
//남은 빈병과 오늘 마신 빈병을 더해줌;
if(nmg < Needbottle) {
break;
}
sum = 0;
while(nmg >= Needbottle) {
nmg = nmg - Needbottle;
sum++;
count++;
//나머지 빈병으로 더 마실수 있나 확인
}
sum = sum + nmg;
if(nmg < Needbottle) {
break;
}
//다시 한번 마신병수 체크후 Needbottle보다 크면
//첫번째 while 문으로 돌아간다.
}
System.out.println(count);
출처 링크 : www.acmicpc.net/problem/5032