본문 바로가기
알고리즘/삼성 SW 역량 테스트 기출 문제

[C++][BOJ] 삼성 SW 역량 테스트 기출 문제 - 13458번 시험 감독

by 개발자J의일상 2021. 5. 17.
반응형

굉장히 쉬운 문제였다.

 

총감독관은 무조건 1명이 들어가야되고 나머지를 부감독관으로 채워야 한다.

 

응시자 수를 받아서 총감독관 수를 빼주고 나머지는 부감독관의 수로 나눠서 반올림 한 것을 더해주면 답이 된다.

 

5

10 9 10 9 10

7 20

을 예시로 들면

총감독관이 7명 감독이 가능하기 때문에

10-7 9-7 10-7 9-7 10-7

3 2 3 2 3 이 되고 부감독이 20명 감독이 가능하기 때문에

3/20 2/20 3/20 2/20 3/20

반올림하면 1 1 1 1 1이 되므로 총 감독관 5명 + 부감독관 5명 해서 10명이 된다.

 

여기서 주의해야 될 것은 응시자수가 1,000,000가 될 수 있는데 시험장 수가 1,000,000이 되면 int형 -21억~21억의 범위를 넘어가게 된다. 그래서 정답을 unsigned long long으로 설정해서 더해줘야만 한다.

 

이제 정답 코드를보자.

#include <iostream>
#include <cmath>
using namespace std;

#define MAX_N 1000001
int A[MAX_N];
int N;
int B, C;
int main()
{
	cin >> N;
	for (int i = 0; i < N; i++)
	{
		cin >> A[i];
	}
	cin >> B >> C;

	unsigned long long answer = N;
	for (int i = 0; i < N; i++)
	{
		int temp = A[i] - B;
		if (temp < 0) temp = 0;
		answer += ceil(((double)temp / C));
	}
	cout << answer << endl;

}

 

300x250

댓글