관리 메뉴

cococo-coding

*10833번. 사과 (c++풀이) 본문

[BOJ] 코드 모음/C++_learning 문제집

*10833번. 사과 (c++풀이)

_dani 2023. 12. 4. 20:30

최종 코드

#include <iostream>
using namespace std;

int main() {
    //1. 학교수 n을 입력받는다.
    //2. 학생 수와 사과 수를 n만큼 입력받는다.
    //3. 남는 사과 수가 최소한이 되도록 계산한다.
    //4. 남는 사과의 총 개수를 구한다.
    //5. 남는 사과의 총 개수를 출력한다.

    //1
    int n;
    cin >> n;

    //2
    int student=0, apple=0, leftover=0;
    
    for(int i=0; i<n; i++){ //n만큼 반복
        cin >> student >> apple;
        
        int j=1;
        while(1){ //3
            if(student*j>apple){
                if(student>apple){ //학생수가 사과개수보다 작은 경우 예외처리
                    leftover+=apple; //4
                    break;
                }
                //4
                leftover+=apple-(student*(j-1));
                break;
            }
            j++;      
        }
    }
    //5
    cout << leftover;
    return 0;

}

코드가 복잡한데 while문에서 2가지만 보면 된다.

첫 번째로는 학생수<사과수인 경우와

두 번째는 일반적인 나머지 경우(학생수>사과수)

이렇게 나눠서 코드를 짰는데 더 쉽게도 가능할 것 같긴 하다.. 기회가 되면 더 줄여보는 걸로..

2023.12.04