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를 넣어줬고 정답 !!
더 꼼꼼하게 풀어야겠다
'코딩테스트-알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Lv.0] 정수를 나선형으로 배치하기 (1) | 2024.01.11 |
---|---|
[프로그래머스/Lv.1] 덧칠하기 (1) | 2024.01.09 |
[프로그래머스/Lv.1] 카드 뭉치 (0) | 2023.12.26 |
[프로그래머스/Lv.1] 과일 장수 (0) | 2023.12.25 |
[프로그래머스/Lv.1] 명예의 전당 (1) (2) | 2023.12.22 |