알고리즘
프로그래머스 - 콜라 문제
Heidong
2022. 11. 4. 10:50
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/132267
내 풀이
public class P_44 {
static int ans = 0;
public int solution(int a, int b, int n) {
if(n < a) {
return ans;
}
int minus = (n / a) * a;
int plus = (minus / a) * b;
int empty = n - minus + plus;
ans += plus;
return solution(a, b, empty);
}
public static void main(String[] args) {
// 콜라문제
int a = 3;
int b = 2;
int n = 20;
P_44 p = new P_44();
int result = p.solution(a, b, n);
System.out.println(result);
}
}
답을 구하기 위해서는 빈병을 줄여가면서 받았던 콜라들을 구해야 하기 때문에 재귀를 이용해서 풀었다.
재귀 탈출의 조건은 빈병 n 이 교환 가능한 콜라의 갯수 a 보다 작아질 때 이다.
더 이상 콜라를 교환할 수 없을때까지 !
다른 사람 풀이
class Solution {
public int solution(int a, int b, int n) {
int answer = 0;
while (n >= a) {
answer += b * (n / a);
n = b * (n / a) + n % a;
}
return answer;
}
}
class Solution {
public int solution(int a, int b, int n) {
int answer = 0;
while(n >= a) {
answer += n/a*b;
n = n/a*b + n%a;
}
return answer;
}
}
반복문을 이용해서 풀 수 도있다.
n % a 나머지를 더하는 이유는 새로 받은 콜라들 + 기존에 나누어 떨어지지 못했던 나머지 빈병들을 합쳐야 현재 가지고 있는 빈병의 총 갯수를 알 수 있기 때문이다.
반응형