본문 바로가기

알고리즘/백준 문제풀이

백준 - 13458(시험 감독, python)

728x90

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

문제 접근

  • 교실별 필요한 감독관수를 구해서 더해주었음

작성한 코드

n = int(input())
#시험장별 학생 수
num = list(map(int, input().split()))
B, C = map(int, input().split())
#총 감독관 수와 부 감독관 수
viewer = 0
for i in range(n):
    #시험장별 감독관 수
    viewer += 1
    #교실당 감시 가능한 수
    can_view = B
    while num[i] > can_view:
        viewer += 1
        can_view += C

print(viewer)

결과는 시간초과..

범위가 10^6이라 for문안에 while문을 넣는식으로는 값이 커졌을 때 감당이 안되는 모양...

고민해보다 결국 다른사람 코드 참조

n = int(input())
#시험장별 학생 수
num = list(map(int, input().split()))
B, C = map(int, input().split())
#총 감독관 1명씩 배치
viewer = n
for i in num:
    i -= B
    if i > 0:
        # 감시해야하는 학생이 부 감독관이 감시할 수 있는 수로 나누어떨어지지 않으면 부감독을 1명 더 배치
        if i % C != 0:
            viewer += (i // C) + 1
        else:
            viewer += (i//C)

print(viewer)

위에까진 어렵지 않았는데 주석문 아래 나머지로 처리하는게 익숙하지 않았다...매번 반복문으로 1명씩 찾다보니..

이 기회에 좀 더 유동적으로 생각해보자

 

출처 

https://wook-2124.tistory.com/459

 

백준 알고리즘 | 13458 : 시험 감독 (Python / 파이썬)

시험 감독 성공분류 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 2 초 512 MB 47270 12925 9137 25.757% https://www.acmicpc.net/problem/13458 13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,00

wook-2124.tistory.com