본문 바로가기
백준

[백준 12358] 시험 감독, C++

by 황인태(intaehwang) 2020. 3. 3.
반응형

https://www.acmicpc.net/problem/13458

 

13458번: 시험 감독

첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000)

www.acmicpc.net

 본 문제는 삼성 SW 역량 테스트 기출 문제다.

/* 개인적인 생각으로 역대 시험 문제중 제일 쉽다고 생각한다. 왜냐하면 기존 삼성 문제는 접근도 쉽지 않았고, 구현도 힘들다. 그런데 이번 문제는 접근도 쉽고, 구현도 간단하다. 프로그래머스 level 2 수준 정도 되는거 같다. */

문제의 조건은 다음과 같다.

  1. 각각의 시험장에 총감독관은 오직 1명, 부감독관은 여러 명 있어도 된다.
  2. 시험장마다 응시생들을 모두 감시해야 한다.

먼저 시험장 개수, 시험장 마다 응시 인원, 총감독관이 감독할 수 있는 사람 수, 부감독관이 감독할 수 있는 사람 수가 입력으로 들어온다.

문제 해결 과정은 다음과 같다.

  1. 각 시험장 마다 총감독관이 감독할 수 있는 사람 수를 뺀다.
  2. 이때, 총감독관 혼자서 감독이 가능한 경우는 continue
  3. 1결과를 부감독관이 감독할 수 있는 사람 수로 나눈다.
  4. 이때, 3의 결과가 0또는 나머지가 발생할 수 있으므로 1을 더한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <cstdio>
#include <vector>
 
using namespace std;
 
int main() {
    int n;
    scanf("%d"&n);
    vector<int> v(n);
    for (int i = 0; i < n; i++) {
        scanf("%d"&v[i]);
    }
    int x, y;
    scanf("%d %d"&x, &y);
 
    long long ans = 0;
    for (int i = 0; i < v.size(); i++) {
        int tmp = v[i] - x;
        ans += 1;
        if (tmp <= 0continue;
        int a = tmp / y;
        if (tmp % y != 0) a += 1;
        ans += a;
    }
    printf("%lld\n", ans);
}
cs
반응형

'백준' 카테고리의 다른 글

[백준 1525] 퍼즐, C++  (0) 2020.03.09
[백준 11051] 이항 계수 2, C++  (0) 2020.03.08
[백준 1038] 감소하는 수, C++  (0) 2020.03.02
[백준 15684] 사다리 조작, C++  (0) 2020.03.02
[백준 1963] 소수 경로  (0) 2020.02.26
Buy me a coffeeBuy me a coffee

댓글