728x90
🔗 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/132267
📌 문제 개요
빈 병 a개를 가져다주면 콜라 b병을 받을 수 있는 마트가 있다.
현재 빈 병이 n개 있을 때, 더 이상 교환할 수 없을 때까지 반복하여 받을 수 있는 콜라의 총 개수를 구하는 문제이다.
📌 접근 방법
이 문제는 실제 교환 과정을 그대로 구현하는 시뮬레이션 문제이다.
현재 보유한 빈 병 수가 a개 이상인 동안 계속 교환을 진행한다.
- 교환 가능한 횟수 계산
- 받은 콜라 수 누적
- 남은 빈 병 수 갱신
📌 핵심 아이디어
교환 가능한 횟수 : int exchange = n / a;
이번에 받는 콜라 수 : exchange * b
받은 콜라를 모두 마시면 다시 빈 병이 되므로
다음 보유 병 수 : (받은 콜라 수) + (교환 후 남은 빈 병 수)
n = (exchange * b) + (n % a);
📌 전체 코드
class Solution {
public int solution(int a, int b, int n) {
int answer = 0;
while(n >= a){
int exchange = n / a;
answer += exchange * b;
n = (exchange * b) + (n % a);
}
return answer;
}
}
📄 정리
- 교환 가능한 횟수는 n / a
- 받은 콜라 수는 exchange * b
- 받은 콜라는 다시 빈 병이 되므로 다음 계산에 포함
- n < a가 되면 더 이상 교환할 수 없으므로 종료
- 구현 난이도는 낮지만 병 수 갱신 공식을 정확히 이해하는 것이 핵심인 문제
728x90
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
| 프로그래머스 모의고사 JAVA 풀이 (완전탐색) (0) | 2026.06.06 |
|---|---|
| 프로그래머스 명예의 전당 (1) JAVA 풀이 (우선순위 큐, PriorityQueue) (0) | 2026.06.05 |
| 카드 뭉치 JAVA 풀이 (구현, 문자열) (0) | 2026.06.03 |
| 프로그래머스 숫자 문자열과 영단어 JAVA 풀이 (문자열, replace) (0) | 2026.06.02 |
| [프로그래머스] K번째수 JAVA 풀이 (알고리즘, 시간복잡도) (0) | 2026.05.28 |