Baekjoon 문제 풀기 (13458번 : 시험 감독) Python

13458번 : 시험 감독

1. 문제읽기


조건 잘 이해하기

문제가 길어서 또 문제 해석을 잘못하고 이상하게 풀까봐 혹시 놓친 조건이 있나 여러번 읽었다.
역시나 잘못 읽을 뻔 했다..
부감독관이 감시할 수 있는 응시자의 수가 시험장 내에서 공유되는 줄 알았는데, 예제를 풀면서 다행히 캐치했다.

총감독관이 무조건 있다는 조건은 없어서 헷갈렸는데, 이것도 역시 예제를 통해 습득했다.
총감독관은 무조건 1명씩 존재하고, 남은 응시자 수를 C값으로 나눈 후 올림을 하면 된다.

2. 제출 코드


처음에 if문을 안넣고 제출을 했다. 정답 비율이 낮길래 이렇게 쉬울리 없다고 생각했는데 역시나 틀렸다.
코드에 어떤 부분이 오류가 날 수 있을까 생각했는데, i의 값이 b보다 작을 때 음수 값이 나올 수 있을 것 같아 if문으로 조건을 달아주었더니 성공했다.

import math

n = int(input())
a = list(map(int, input().split()))
b, c = map(int, input().split())

count = 0

for i in a:
    if i >= b:
        i -= b
        count += 1
        count += math.ceil(i/c)
    else:
        count += 1


print(count)

3. 공부할 것


다른 사람들의 코드를 보니까 다 너무 어렵고.. 이해할 수가 없었다.
그나마 나랑 비슷한 로직으로 코드를 짠 분을 발견했는데 역시 나보다 쉽게 해결하셨다.

max 함수와 0을 써서 내가 if문에 썼던 조건인 음수가 나왔을 때의 조건을 상쇄시켰다.

import math

n = int(input())
a = list(map(int, input().split()))
b, c = map(int, input().split())


count = n
for i in a:
    count += max(math.ceil((i-b)/c), 0)


print(count)

댓글남기기