코딩테스트-알고리즘/프로그래머스
[프로그래머스/Lv.1] 콜라 문제
닉네임생각즁
2023. 12. 22. 06:29
https://school.programmers.co.kr/learn/courses/30/lessons/132267
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;
}
}
2병을 1병으로 바꿔주는거 생각해보면
20 → 10 → 5 → 2(나눠떨어지는 4병으로 바꿈) + 1 → 1(나눠떨어지는 2병으로 바꿈) + 1 → 1
이런식이다
바꿔주는 단위의 병 개수로 나눠주면서 몫은 answer와 남아있는 병 개수에 넘겨주고, 나머지는 남아있는 병 개수에 넘겨주면서 더이상 바꿀 수 없을 때까지 진행하면 된다
answer는 계속 더해져야하니까 answer += n/a, 남아있는 병 개수 n은 새롭게 업뎃되어야하니까 n = n/a + n %a
이렇게 해서 맞을 줄 알았더니 테스트 일부만 통과했다 생각해보니 b를 전혀 고려하지 않았고 b가 1일때만 생각한셈,,
만약 5병을 3병으로 돌려준다고 하면 같은 방식으로 하되 * 3 만 해주면 되었다
그래서 * b를 넣어줬고 정답 !!
더 꼼꼼하게 풀어야겠다