본문 바로가기

Algorithm/Programers - C++

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

 

Level. 1

 

문제

콜라 빈 병 2개를 가져다주면 콜라 1병을 주는 마트가 있다. 빈 병 20개를 가져다주면 몇 병을 받을 수 있는가?
단, 보유 중인 빈 병이 2개 미만이면, 콜라를 받을 수 없다.

콜라를 받기 위해 마트에 주어야 하는 병 수 - a
빈 병 a개를 가져다주면 마트가 주는 콜라 병 수 - b
상빈이가 가지고 있는 빈 병의 개수 - n
이 매개변수로 주어집니다. 상빈이가 받을 수 있는 콜라의 병 수를 return 하도록 solution 함수를 작성해 주세요.

 

풀이

#include <string>
#include <vector>

using namespace std;

int solution(int a, int b, int n) {
    int answer = 0;
    while(n>=a){
        answer += (n/a * b);
        n = n%a + (n/a * b);
    }
    return answer;
}

 

해결 방법

0. 현재 가지고 있는 콜라병의 개수가 a(콜라를 받기 위해 마트에 주어야 하는 병 수)와 같거나 클 때까지만 반복문을 돌려주었다.

1. 반복문을 돌 때마다 answer(받은 콜라병의 개수)에 새로 받게 된 콜라병 수(n/a * b)를 더해주었다.

2. 새롭게 받게 된 콜라병(n/a * b)으로도 교한이 가능하기 때문에, 현재 가지고 있는 그만큼 다시 더해주어 반복문을 돌렸다. 

 

 

 

 


다른 사람 풀이

#include <string>
#include <vector>

using namespace std;

int solution(int a, int b, int n) {
    int answer = 0;
    while(n >= a){
        answer += b;
        n -= (a - b);
    }
    return answer;
}

 

 


https://school.programmers.co.kr/learn/courses/30/lessons/132267?language=cpp 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr