본문 바로가기
알고리즘 공부/프로그래머스 [C++]

프로그래머스 : 콜라 문제 [C++]

by 이포터 2022. 10. 29.

문제 링크

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

 

문제 풀이

  1. 4개의 변수로 구별해서 코드를 작성했다.
  2. bonus : 총 병수 / 필요한 빈병 = 받을 수 있는 병수
  3. remain : 총 병수 % 필요한 빈병 = 바꾸지 못하는 병수
  4. n : 바뀐총병수 = 받을 수 있는 병수 + 바꾸지 못하는 병수
  5. 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;
}

 

리뷰

  • 문제를 풀고나니, 생각지도 못한 방법으로 접근해서
  • 문제를 해결하는 대단한 사람들이 많았다.....

댓글