문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/132267
문제 설명
1. 콜라 빈 병 2개를 가져다주면 콜라 1병을 주는 마트가 있다.
2. 빈 병 20개를 가져다주면 몇 병을 받을 수 있는가?
3. 단, 보유 중인 빈 병이 2개 미만이면, 콜라를 받을 수 없다.
4.콜라를 받기 위해 마트에 주어야 하는 병 수 a
5. 빈 병 a개를 가져다 주면 마트가 주는 콜라 병 수 b
6.상빈이가 가지고 있는 빈 병의 개수 n
7. 상빈이가 받을 수 있는 콜라의 병 수를 return 하도록 solution 함수를 작성해주세요.
문제 입출력 예)
a | b | n | result |
2 | 1 | 20 | 19 |
3 | 1 | 20 | 9 |
문제 풀이
- 4개의 변수로 구별해서 코드를 작성했다.
- bonus : 총 병수 / 필요한 빈병 = 받을 수 있는 병수
- remain : 총 병수 % 필요한 빈병 = 바꾸지 못하는 병수
- n : 바뀐총병수 = 받을 수 있는 병수 + 바꾸지 못하는 병수
- sum : 합계 = 합계 + 받을 수 있는 병수
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int solution(int a, int b, int n) {
int sum = 0;
int bonus = 0;
int remain = 0;
int init = 0;
while(n>=a){
bonus = n/a*b;
remain = n%a;
n = bonus + remain;
sum += bonus;
}
return sum;
}
리뷰
- 문제를 풀고나니, 생각지도 못한 방법으로 접근해서
- 문제를 해결하는 대단한 사람들이 많았다.....
'알고리즘 공부 > 프로그래머스 [C++]' 카테고리의 다른 글
프로그래머스 : 주식가격 [C++] (0) | 2022.10.31 |
---|---|
프로그래머스 : 중간 리뷰 (6일차) [C++] (0) | 2022.10.29 |
프로그래머스 : 중간 리뷰 (5일차) [C++] (0) | 2022.10.28 |
프로그래머스 : 멀리뛰기 [C++] (0) | 2022.10.28 |
프로그래머스 : 구명보트 [C++] (0) | 2022.10.28 |
댓글