본문 바로가기
Algorithm

[백준] 5032번: 탄산 음료(구현, 수학)

by 주발2 2020. 4. 10.
반응형

https://www.acmicpc.net/problem/5032

 

5032번: 탄산 음료

문제 준민이는 탄산 음료를 좋아한다. 탄산 음료를 사느라 돈을 다 써버렸기 때문에, 이제 준민이는 가진 돈이 없어 탄산 음료를 사먹을 수 없다. 준민이는 항상 법을 지키며 사는 사람이기 때문에, 아무리 탄산 음료가 먹고 싶어도 훔치지 않는다. 따라서, 법적으로 문제가 없는 방법으로 탄산 음료를 구매할 것이다. 마침 빈 병을 특정 개수만큼 가져가면, 새 병으로 바꾸어주는 이벤트가 진행중이다. 준민이는 길에서 빈 병을 열심히 찾은 뒤, 탄산 음료를 먹으려고

www.acmicpc.net

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(bf.readLine());
		int e = Integer.parseInt(st.nextToken());	// 가지고 있는 빈병 수
		int f = Integer.parseInt(st.nextToken());	// 발견한 빈병 수
		int c = Integer.parseInt(st.nextToken());	// 새병으로 바꾸는데 필요한 빈병 수
		
		int sum = e + f; // 총 가지고 있는 빈병 수
		int ans = 0;	 // 마실 수 있는 탄산 음료 개수
		while(sum >= c) {
			int mok = sum / c;	// 현재 마실 수 있는 음료수
			ans += mok;			// 현재 마실 수 있는 음료수
			sum = mok + (sum%c); // 이전에 교환해서 마신 음료수 + 빈병
		}
		
		System.out.println(ans);
		bf.close();
	}

}

 

풀이

문제에 함정이 하나 있었다.

9 0 3 과같이 빈병의 수는 9개, 새 병으로 바꾸는데 필요한 빈병은 3개일때,

9 / 3 = 3이다.

하지만 바꾸고나서 음료를 마시면 빈병이 3개가 되므로, 다시 한번 더 1병으로 바꿀 수 있다.

따라서 총 마실수 있는 음료수는 4개.

이 부분을 고려해주면 된다.

 

반응형

댓글