프로그래밍/프로그래머스

Lv1_[콜라 문제, C++] 알고리즘 정리 - 프로그래머스

워킹독 2022. 11. 3. 22:54
728x90

문제 내용, 조건, 예시는 프로그래머스 사이트 참조


이 문제는 예제 풀이에 자세히 나와 있기 때문에 알고리즘을 작성해주면 된다.

1) 빈병 a개를 주면 콜라 b개를 주기 때문에 교환비는 a:b가 되고 콜라를 얻는 수는 빈병 곱하기 교환비다. (n/a)로 정수를 뽑아주고 곱하기 b를 해주면 된다. (n/a)*b
2) 교환비에 맞지 않게 남은 공병은 별도로 기억해둔다 (n%a)
3) 얻은 콜라는 마셔서 공병으로 만들어서 남은 공병이랑 같이 더해서 다시 1) 반복
(n = gain_cokeEA + have_left_EmptyCokeEA)
4) 얻은 콜라 수가 a보다 작아질 때 (a>n) 종료한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int solution(int a, int b, int n) {
    int answer = 0;
    while(true) {
        if(a > n) {
            break;
        }
 
        int gain_cokeEA = ((n / a) * b);
        int have_left_EmptyCokeEA = (n % a);
 
        answer += gain_cokeEA;
        cout << "gain_cokeEA : " << gain_cokeEA << endl;
        cout << "have_left_EmptyCokeEA : " << have_left_EmptyCokeEA << endl;
        cout << "remain_cokeEA : " << gain_cokeEA + have_left_EmptyCokeEA << endl << endl;
        
        n = gain_cokeEA + have_left_EmptyCokeEA;
    }
 
    return answer;
}
cs


동작 시간은 특별한 것이 없기 때문에 빠르게 넘어갔다.


무언가 특별한 규칙을 찾아보려했지만 그러지 못하였다


↓↓↓↓↓↓ 유익했다면 하트 뿅 ♥ ↓↓↓↓↓↓

728x90
반응형