코딩테스트
[JS] 연습문제 > 콜라 문제
차차한
2024. 9. 6. 14:56
function solution(a, b, n) { //a병을 주면 b병만큼 받음. 나는 현재n병이 있음
var answer = 0;
var plus = 0;
while(n >= a){
plus = Math.trunc(n / a) * b;
n = n - (a * Math.trunc(n / a)) + plus;
answer += plus;
}
return answer;
}
이번 문제는 약간 암기식으로 풀려고 하니까 헷갈려서 생각보다 시간을 오래 잡아먹었다.
내가 20개의 병을 가지고 있고 그 수(n)가 마트에 주어야 하는 병의 개수(a)보다 적으면 더이상 교환을 할 수 없으니까 while 반복으로 n >= a 조건을 걸어 반복을 한다.
plus라는 변수는 마트에서 주고 받는 병의 개수.
마트에서 2병(a) 당 1개(b)의 병을 교환해주니까 Math.trunc(20(n) / 2(a)) * 1(b)를 해서
처음에 20병을 주면 10병을 받을 수 있다.
내가 기존에 가지고 있는 병에서 교환에 사용했던 병(20병)을 빼고 새로 받은 병(plus, 10병)을 하면
처음 교환 후 내가 가지고 있는 병은 10병(n)이 된다.
이번 문제는 내가 추가로 얻을 수 있는 병의 개수만 리턴하면 되니까 answer 변수에 plus 변수값을 더해준다.
문제를 풀다보니 테스트케이스는 통과가 됐는데 실제 문제풀이를 하면 2개 빼고 계속 실패가 떠서
테스트 케이스를 추가로 넣고 테스트를 다시 했다.
위의 두 개의 테스트케이스를 모두 통과하고 문제풀이를 하니 성공~!