문제
인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다.
…
줄을 서 있는 사람의 수 N과 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어졌을 때, 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 구하는 프로그램을 작성하시오.
일단 이 문제를 보자마자 운영체제 수업시간에 들을 스케쥴링 알고리즘 중 shortest job first
가 생각났다. shortest job first
알고리즘은 모든 job들이 동시에 도착하였을 때 제일 optimal한 스케쥴링 기법이다.
N = int(input())
p = list(map(int, input().split()))
p.sort()
t = 0
sum = 0
for i in p:
t += i
sum += t
print(sum)
사람마다 인출하는데 걸리는 시간을 짧은 사람 부터 sort하고, 각 사람마다 걸리는 시간을 기다리는 시간 포함하여 t에 저장 후 sum에 모든 시간의 합을 저장하였다.
🤓스케쥴링 알고리즘 기법에 대해 알고있었다면 쉬웠을 문제