문제 및 제한사항
나의 풀이
처음 문제를 딱 보고 '어? 그냥 반복문 돌리면 되는거 아냐?' 라고 생각이 들었다.
하지만 문제를 조금 더 자세히 보고 나니 반복문으로 문제를 풀게 되면 바꾸지 못한 빈병과 남은 빈병의 합이 2 이상일 경우 빈병을 다시 콜라로 바꿀 수 없다는 문제가 존재했다.
여러 시도를 해본 뒤 '재귀함수'를 사용해서 풀면 되겠다는 생각이 들었다.
현재의 빈 병(n)이 a보다 클 경우 빈병을 주고 새로 받아온 콜라의 수를 리턴함과 동시에
다시 '남은 빈병'과 '새로운 콜라'를 '빈병의 수'를 가리키는 n에 넣어서 n=a가 될때까지 반복시켰다.
(새로 받은 콜라를 넣어준 이유는 어차피 다 먹고 난 뒤 빈 병이 되기 때문이다.)
n < a일 경우 'return 0'을 해줌으로써 마지막 return인 0을 더한 후 재귀함수를 끝내주었다.
function solution(a,b,n) {
if(n>=a){
let total = Math.floor(n/a)*b
return total + solution(a,b,total + n%a);
} else {
return 0;
}
};
'Algorithm' 카테고리의 다른 글
카드 뭉치 [프로그래머스] (1) | 2023.10.19 |
---|---|
명예의 전당(1) [프로그래머스] (1) | 2023.10.19 |
두 개 뽑아서 더하기 [프로그래머스] (0) | 2023.10.19 |
푸드 파이트 대회 [프로그래머스] (1) | 2023.10.17 |
가장 가까운 같은 글자 [프로그래머스] (0) | 2023.10.16 |