본문 바로가기

Algorithm/Implementation

(C++) - LeetCode (easy) 1518. Water Bottles

반응형

https://leetcode.com/problems/water-bottles/description/

간단 구현 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

먼저 마시고 시작합니다. 정답 변수 drank를 선언해 numBottles만큼 값을 할당합니다.

📔 풀이과정

더 이상 교환 불가할 때까지 while loop를 돌며 다음을 수행합니다.

1. 교환 가능한 물병 개수 exchanged = numBottles / numExchange 입니다. 이를 지역 변수를 선언해 저장합니다.

2. 이외의 물병 개수 surplus = numBottles % numExchange가 됩니다. 이를 지역 변수를 선언해 저장합니다.

3. 교환한 물병 개수만큼 마셔줍니다. 즉, drank에 exchanged값을 누적해 더해줍니다.

4. 다 마시고 남은 물병 개수와 surplus를 더한 값이 남은 빈 병 개수가 되므로 numBottles값을 갱신해줍니다.

📔 정답 출력 | 반환

drank를 반환합니다.


📕 Code

📔 C++

class Solution {
public:
    int numWaterBottles(int numBottles, int numExchange) {
        int drank = numBottles;
        while(numBottles >= numExchange) {
            int exchanged = numBottles / numExchange;
            int surplus = numBottles % numExchange;
            drank += exchanged;
            numBottles = exchanged + surplus;
        }
        return drank;
    }
};

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.