ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 백준 - 시험 감독 (13458) [C++]
    문제 풀이/백준 2024. 4. 2. 22:42
    반응형

    이 문제는 간단한 구현 문제이다.

    매우 간단해보이는데 생각보다 정답률이 낮았다.

    문제는 아주 간단한데, 총감독관을 각 방에 집어넣은 뒤 남은 인원을 부감독관으로 빼주면 된다.

     

    여기서 문제는 시험장의 개수가 100만이고, B, C가 1이고, 응시자의 수가 모두 100만이면 100만 * 100만의 결과가 나오므로 오버플로우가 발생하는 것이다.

    이를 해결하기 위해 정답 변수의 타입을 long long으로 하면 쉽게 풀린다.

    #include <iostream>
    using namespace std;
    
    #define MAX 1000000
    typedef long long LL;
    
    int N, B, C;
    LL students[MAX];
    
    void input() {
    	cin >> N;
    	for (int i = 0; i < N; i++) {
    		cin >> students[i];
    	}
    	cin >> B >> C;
    }
    
    LL solve() {
    	LL result = 0;
    	for (int i = 0; i < N; i++) {
    		result++;
    		students[i] -= B;
    	}
    
    	for (int i = 0; i < N; i++) {
    		if (students[i] <= 0) {
    			continue;
    		}
    
    		LL need = students[i] / C;
    		int rest = students[i] % C;
    
    		if (rest != 0) {
    			need++;
    		}
    
    		result += need;
    	}
    
    	return result;
    }
    
    int main() {
    	ios_base::sync_with_stdio(0);
    	cin.tie(0);
    	cout.tie(0);
    
    	input();
    	cout << solve() << '\n';
    
    	return 0;
    }
    반응형
Designed by Tistory.