Notice
Recent Posts
Recent Comments
Link
beepbeep
프로그래머스 콜라 문제 본문
한때 sns에서 유행했던 일명 콜라 문제를 풀어낼 수 있는 코드를 작성하는 문제이다.
n = 현재 가지고 있는 빈 병의 개수
a = 새 음료와 교환할 때 필요한 할 빈 병의 개수
b = 빈 병 a개와 교환할 수 있는 새 음료의 개수
처음에 푼 방법
int answer = 0;
int remain = 0;
while(n >= a){
if(n % a != 0) {
remain += n % a;
}
n = n / a * b;
answer += n;
if(remain >= a || a > n){
n += remain;
remain = 0;
}
}
return answer;
처음에 작성한 내용인데... 요구사항을 해결하긴 했지만 불필요한 부분이 많이 들어있다.
나머지 변수를 만든다던지, n의 나머지가 있을 때 나머지 변수에 누적한다던지, a가 n보다 클 때만 더한다던지 하는 부분은 필요하지 않다...
나머지를 따로 만들지 않고 계산 즉시 현재 가지고 있는 병의 개수인 n에 누적시켜도 된다. 너무 어렵게 생각했다...
다시 푼 방법
int answer = 0;
while(n>=a){
answer += n/a*b;
n = n/a*b + n%a;
}
return answer;
불필요한 부분을 제거하기 위해서 다시 작성했다. 이번엔 나머지가 바로 n에 누적되게 했다.
'코딩테스트 연습 > 기타' 카테고리의 다른 글
LeetCode 48번 - Lotate Image (0) | 2023.03.16 |
---|---|
약수 개수 세기 (0) | 2023.02.14 |
프로그래머스 치킨쿠폰 문제 - 나누기와 빼기의 반복 횟수 비교 (0) | 2023.02.07 |
프로그래머스 - 구슬을 나누는 경우의 수(feat. 조합) (0) | 2023.01.25 |
LeetCode 58번 - Length of Last Word (0) | 2023.01.20 |