문제 정보
백준 ( BOJ ) 13458 시험 감독
문제 풀이 : queue 를 이용한 계산 문제
문제 출처 : https://www.acmicpc.net/problem/13458
문제 풀이
이번 문제는 삼성 기출 문제 치고는 상당히 간단한 편 입니다.
-
각 방의 인원수를 모두 queue 에 넣는다.
-
하나씩 팝 해가며, 각 값에 주 감독관 수를 뺀다.
-
주 감독관 수를 뺀 후 남은 값에 서브 감독관 수 를 나눈 값을 더해줍니다.
3-1. 이떄, 딱 맞아 떨어지지 않는 한 나머지 값을 위해 +1 해줍니다.
(혹은 float 형식으로 나눈 후, 올림 해주셔도 됩니다.)
케이스 검토
첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다.
둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다.
셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000)
N : 문제 없음
B,C : 문제 없음
Ai : 문제 없음
result : 문제 있음.
condition
N : 100000
Ai : 100000
B,C : 1, 1
result : 10000000000000 > int range
=> long int 사용
문제 풀이
#include <iostream>
#include <queue>
using namespace std;
int main() {
int room;
int mainD;
int subD;
int temp;
long long int result;
queue<int> people;
cin >> room;
result = room;
while (room) {
cin >> temp;
people.push(temp);
room--;
}
cin >> mainD >> subD;
while (!people.empty()) {
temp = people.front();
people.pop();
temp -= mainD;
if (temp > 0) {
result += temp / subD;
if (temp%subD != 0) {
result++;
}
}
}
cout << result;
cin >> temp;
return 0;
}