문제 링크: https://www.acmicpc.net/problem/13458

2015년 하반기 삼성 sw역량테스트에 출제된 기출이라고 하네요. 요즘 트렌드로 봐서는 이런 쉬운 문제가 다시 나오진 않겠죠...

 

각 시험장마다 총감독관 한명은 무조건 있어야 하고, 남은 인원에 대해서 부감독관이 몇명이 필요한지 세면 되는데요, 두 가지를 주의해야 합니다.

  • 정답의 범위: int 범위를 넘어갑니다. long long을 사용하세요
  • 실수연산 주의

 

\[ \left \lceil \frac{사람수-b}{c} \right \rceil \]

매 고사장마다 필요한 부감독관의 인원은 위 수식으로 나타낼 수 있는데요, 문제는 ceil 함수를 썼더니 예제는 맞는데 채점하니 틀립니다. 실수연산에서 답이 달라지는 케이스가 있는 것 같네요.

그러면 정수연산으로 계산해주고, 나누어떨어지지 않는 경우만 더해주면 됩니다.

 

#pragma GCC optimize ("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,avx,avx2")

#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>

using namespace std;


int main()
{
#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);
#endif

	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);

	int n;
	cin >> n;

	vector<int> v(n);
	for (auto& num : v)
		cin >> num;

	int b, c;
	cin >> b >> c;

	long long ans = 0;

	ans += n;
	for (auto& num : v)
		if (num > b) {
			ans += (num - b) / c;
			if ((num - b) % c != 0)
				++ans;
		}

	cout << ans << '\n';

	return 0;
}

 

반응형

'Online Judge > 백준' 카테고리의 다른 글

[백준][C++] 1463: 1로 만들기  (0) 2020.05.13
[백준][C++] 17825: 주사위 윷놀이  (0) 2020.05.12
[백준][C++] 1373: 2진수 8진수  (0) 2020.04.10
[백준][C++] 17087: 숨바꼭질 6  (0) 2020.04.10
[백준][C++] 9613: GCD 합  (0) 2020.04.10