[백준] 시험 감독

subin·2023년 4월 12일
0

🥰Coding Test

목록 보기
6/22
post-thumbnail

문제

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

TC

각 시험장에 있는 응시자 수만큼만 반복문 돌리면 된다.
O(n)

Idea

총감독관 1명이 모든 응시자를 감독할 수 있는 경우 OR 부감독관도 필요한 경우를
잘 나누어 생각하면 좋다.

code (Python)

import math

# 시험장의 개수
n = int(input())
# 각 시험장에 있는 응시자 수
candidate = list(map(int, input().split()))
# b=총감독관, c=부감독관
b, c = map(int, input().split())

# 필요한 감독관의 최소 수
result = 0
for cand in candidate:
    # 총감독관 혼자 감독이 가능한 상황이라면
    if cand <= b:
        result += 1
    # 부감독관도 필요한 상황이라면
    else:
        result += math.ceil((cand-b) / c) + 1

print(result)

self code review

브론즈의 난이도 치고는 정답률이 꽤나 낮은 문제였다.
왜 그런지 궁금했는데 총감독관이 오직 "1명"만 있어야 한다. 라는 말을 "총감독관 <= 1"이라고 생각한 사람이 많았나보다.

나도 처음에는 총감독관 혼자 감독이 가능한 상황/부감독관도 필요한 상황을 세분화 하지 않고, 한 번에 구하려다보니 틀렸었다.

for 응시자 in 각 응시자 수:
    result += math.ceil((응시자-총감독관이 감독할 수 있는 명 수) / 부감독관이 감독할 수 있는 명 수) + 1

이런 식으로 작성했었는데 응시자 수 < 총감독관이 감독할 수 있는 명 수 일 경우에는
계산값이 음수가 나오는 불상사가 생겼다.

문제를 꼼꼼하게 잘 읽고 경우의 수마다 나누는 연습이 필요할 것 같다.

profile
한번뿐인 인생! 하고싶은게 너무 많은 뉴비의 deep-dive 현장

0개의 댓글