티스토리 뷰

문제 - (https://www.acmicpc.net/problem/13458)

솔직히 쉬운 문제였다.

시험장별로 총 감독관은 무조건 1명이므로

A[i]에 총 감독관이 감시할 수 있는 응시자 수(b)를 뺀다. - bSub이라고 하겠다.

 

따라서,

bSub = A[i] - b;

 

그렇다면, bSub만큼의 응시자를 부감독관이 맡으면 된다.

부감독관은 여러명일 수 있으므로 (0명도 가능) 부감독관이 감시할 수 있는 응시자 수(c)를 bSub에 나눠줌으로써 부감독관이 감시할 수 있는 인원을 구한다. 하지만 여기서 주의할 것은 나눠준 나머지 응시자 수 또한 부감독관이 감시해야 한다는 것이다. 물론, 나머지 응시자가 없다면 신경쓰지 않아도 된다.

 

따라서,

answer += bSub / c;
if( bSub % c != 0 ) answer += 1

 

총감독관은 시험장의 수 만큼 있을 것이므로

answer += n;

을 해주면 답이 나온다.


📌주의할 점

  • 입력 변수의 범위는 반드시 확인한다. 큰 실수이므로 실수에 적겠다.

😅실수

  • b=1, c=1, n=1,000,000 일 경우를 생각해보면 총 감독관의 수는 1,000,000,000,000명이 된다.
    int형이 나타낼 수 있는 수는 약 21억이므로 1조라는 수를  감당할 수 없다 ㅠㅠ
    따라서 answer는 int가 아니라 long형으로 선언되어야 한다. 참고로 long은 약 900경까지 표현 가능
  • 정말 중요한 부분이다... 입력 변수의 범위를 잘 보고 그 값이 너무 크다면 내가 사용한 자료형으로 표현할 수 있을지 확인해보는 디테일이 필요하다.

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Proctor {
    static int n;
    static int[] people;
    static int b;
    static int c;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        n = Integer.parseInt(br.readLine());
        people = new int[n];

        StringTokenizer st = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++) {
            people[i] = Integer.parseInt(st.nextToken());
        }
        st = new StringTokenizer(br.readLine());
        b = Integer.parseInt(st.nextToken());
        c = Integer.parseInt(st.nextToken());

        /* n=1,000,000, b=1, c=1 인 경우 총 감독관의 수는 1,000,000 * 1,000,000 = 1조
        * int가 제공할 수 있는 약 21억의 숫자를 넘어서므로 long을 사용해야 함 */
        long/* int 범위를 넘어갈 수 있음! */ answer = 0;
        for (int i = 0; i < n; i++) {
            int bSub = people[i] - b;
            answer += 1;

            if (bSub > 0) {
                answer += (bSub / c);
                if (bSub % c != 0) answer += 1;
            }
        }

        System.out.println(answer);
    }
}

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/03   »
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 27 28 29
30 31
글 보관함