차차로그
[JS] 연습문제 > 콜라 문제 본문
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개 빼고 계속 실패가 떠서
테스트 케이스를 추가로 넣고 테스트를 다시 했다.
위의 두 개의 테스트케이스를 모두 통과하고 문제풀이를 하니 성공~!
'코딩테스트' 카테고리의 다른 글
[JS] 연습문제 > 푸드 파이트 대회 (0) | 2024.09.10 |
---|---|
[JS] 연습문제 > 가장 가까운 같은 글자 (0) | 2024.09.10 |
[JS] 연습문제 > 삼총사 (0) | 2024.09.04 |
[JS] 코딩 기초 트레이닝 > 첫 번째로 나오는 음수 (0) | 2024.08.23 |
[JS] 코딩테스트 입문 > 대문자와 소문자 (0) | 2024.08.23 |
Comments