삼성 SW 역량 테스트 / 삼성 코딩테스트
문제 링크
C++ 풀이
#include <iostream>
#include <vector>
#include <math.h>
using namespace std;
int main() {
int N, B, C;
cin >> N;
vector <int> tester(N);
for (int i = 0; i < N; i++)
cin >> tester[i];
cin >> B >> C; //총감독관, 부감독관
long long answer = 0;
for (int i = 0; i < N; i++) {
answer++;
int leftN = tester[i] - B;
if (leftN > 0)
answer += ceil((double)leftN / C);
}
cout << answer;
return 0;
}
주의해야할 점
1. 시험장 응시자 수보다 총감독관 감시 가능한 수가 더 큰 경우
: 단순하게 ( (응시자 수 - 총감독관 감시 가능 수) / 부감독관 감시 가능 수 )로 계산한다면 마이너스 값을 나누는 경우가 발생할 수 있다.
2. 변수 타입 범위
: 시험장의 개수가 최대 1,000,000이고, 각 시험장의 응시자 수가 최대 1,000,000이기 때문에 감독관이 감시할 수 있는 응시자 수가 작다면 감독관 수를 카운트할 때 값이 int 범위(21억)을 넘을 수 있기 때문에 범위가 큰 타입으로 변수를 설정해야 하다.
반응형
'알고리즘 · 코딩' 카테고리의 다른 글
[백준 21608번] 상어 초등학교 (0) | 2021.04.30 |
---|---|
[백준 10769번] 행복한지 슬픈지 (0) | 2021.04.25 |
[백준 14499번] 주사위 굴리기 (0) | 2021.04.22 |
[프로그래머스] 예상 대진표 (0) | 2021.04.22 |
[프로그래머스] 음양 더하기 (0) | 2021.04.22 |