프로그래머스 Lv.1 - 콜라 문제
출처: https://school.programmers.co.kr/learn/courses/30/lessons/132267
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 프로그래머스 Lv.1 - 콜라 문제
// https://school.programmers.co.kr/learn/courses/30/lessons/132267
//
// [문제] 빈 병 a개를 주면 콜라 b병을 주는 마트. 빈 병 n개로 받을 수 있는 콜라 수 반환
// [제약] 1 ≤ b < a ≤ n ≤ 1,000,000 / 정답은 int 범위 내
// [입출력] a=2,b=1,n=20 → 19 / a=3,b=1,n=20 → 9
//
// 풀이: 보유 병 n이 a 이상인 동안 교환 반복.
// 교환 횟수 n/a, 받는 콜라 (n/a)*b, 남는 병 n%a + 받은 콜라 — O(log n)
#include <string>
#include <vector>
using namespace std;
int solution(int a, int b, int n) {
int answer = 0;
while (n >= a) {
int exchange = n / a;
answer += exchange * b;
n = n % a + exchange * b;
}
return answer;
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.