반응형
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개.
이 부분을 고려해주면 된다.
반응형
'Algorithm' 카테고리의 다른 글
[백준] 17608번: 막대기(구현) (0) | 2020.04.10 |
---|---|
[백준] 5533번: 유니크(구현) (0) | 2020.04.10 |
[백준] 3054번: 피터팬 프레임(구현) (0) | 2020.04.10 |
[백준] 9324번: 진짜 메시지(구현) (0) | 2020.04.09 |
[백준] 2246번: 콘도 선정(구현) (0) | 2020.04.09 |
댓글