●문제




●간단한 설명
마트에 줘야하는 병수 int a
마트가 교환해주는 콜라 병수 int b
상빈이가 가지고있는 빈 병의 갯수 n
a갯수를 주면 b개를 줌 a가 3이고 b가 1이면 3개를 주면 1개를 줌 즉 교환비를 뜻함
교환을 했을때 받는 콜라의 갯수의 총 합을 구하면됨
a가 3 b가1 n이 20일경우
처음에 20 / 3 = 6이니 6개 그리고 남은 병의갯수는 a갯수보다 부족해서
남은 콜라 2개와 돌려받은 6개의 콜라를 합쳐서 8개
8개에서 다시 8 / 3 = 2개 그리고 남은 병의 갯수는 2개
합쳐서 4개
4개에서 다시 4 / 3 = 1개 그리고 남은콜라 1개를 합쳐서 2개
2개는 a갯수보다 모자라니 더이상 교환불가능
여기서 교환한 6개, 2개, 1개 합쳐서 9
그 합친 값을 return
●내가 푼 방법
가지고있는 콜라가 a갯수보다 작아질때까지 while문을 돌려서
given 은 내가 준 콜라갯수 n / a
remaning은 주고 남은 콜라 갯수 n % a
준 콜라갯수 * b + remaning으로 answer에 값을 추가한뒤
while문안의 n값을 answer에 추가한값 + 남은콜라갯수 해서 while문완성
●알아야하는 개념 / 알게된 개념
while문의 사용 범위와 사용법
#include <string>
#include <vector>
using namespace std;
int solution(int a, int b, int n)
{
int answer = 0;
int given;
int remaning;
while (n >= a)
{
given = n / a;
remaning = n % a;
answer += given * b;
n = given * b + remaning;
}
return answer;
}
------
문제는 쉬운데 이상하게 3점짜리다
점수를 주는 기준이 이상한거같다..

'C++ 프로그래머스 > 기타 문제' 카테고리의 다른 글
| 프로그래머스(C++) - 숫자의 표현 (0) | 2025.08.01 |
|---|---|
| 프로그래머스(C++) - JadenCase 문자열 만들기 (0) | 2025.08.01 |
| 프로그래머스(C++) - 푸드 파이트 대회 (0) | 2025.05.12 |
| 프로그래머스(C++) - 숫자 문자열과 영단어 (0) | 2025.05.07 |
| 프로그래머스(C++) - 시저 함수 (0) | 2025.05.07 |
