



나의 풀이
class Solution {
public int solution(int a, int b, int n) {
int answer = 0;
while (n >= a) { // 1
answer += b * (n / a); // 2
n = (n / a) * b + (n % a); // 3
}
return answer;
}
}
과정
- 가지고 있는 빈 병의 개수 n이 마트에 주어야하는 a보다 클때
- 가지고 있는 빈 병의 개수 n을 마트에 주어야하는 a로 나누고,
a개를 가져다 주면 마트가 주는 콜라 병 수 b를 곱한다
- 가지고 있는 빈 병의 개수 n을 마트에 가져다 준 a개를 나눈 값에 b를 곱하고,
가지고 있는 빈 병의 개수 n에 마트에 가져다 준 a개를 나눈 나머지를 구해준 뒤,
두 값을 더해준다
다른 사람 풀이
class Solution {
public int solution(int a, int b, int n) {
return (n - b) / (a - b) * b;
}
}
- 문제 조건에서 항상 n > b를 만족하기에 식 하나로 깔끔하게 풀어낸 것 같다
- 대단하다..