Algorithm(알고리즘)/Greedy Algorithm
3) 최소 지각 벌금 문제
반응형
3. 최소 지각 벌금 문제
n 명이 프린트를 하는 동안 1분씩 지체되어 지각을 한다.
리스트는 n명이 프린트 해야할 페이지 수(1장당 1분,분당 1$)
[1 , 3, 5]
1번 사람 1분 지각
2번 사람 1+3 분 지각
3번 사람 1+3+5 분 지각
...
리스트는 5명이 프린트 해야할 페이지 수(1장당 1분,분당 1$)
hint : 최소 프린트 숫자를 가진 사람 순서대로 진행한다.
풀이 (1)
def min_fee(pages_to_print):
# 인풋으로 받은 리스트를 정렬시켜 준다
sorted_list = sorted(pages_to_print)
# 총 벌금을 담을 변수
total_fee = 0
# 정렬된 리스트에서 총 벌금 계산
for i in range(len(sorted_list)):
total_fee += sorted_list[i] * (len(sorted_list) - i)
return total_fee
# 테스트
print(min_fee([6, 11, 4, 1]))
print(min_fee([3, 2, 1]))
print(min_fee([3, 1, 4, 3, 2]))
print(min_fee([8, 4, 2, 3, 9, 23, 6, 8]))
# 결과
# 39
# 10
# 32
# 188
풀이 (2)
def min_fee(pages_to_print):
pages_to_print.sort()
fee = 0
total_fee = 0
for i in pages_to_print:
fee += i
total_fee += fee
return total_fee
# 테스트
print(min_fee([6, 11, 4, 1]))
print(min_fee([3, 2, 1]))
print(min_fee([3, 1, 4, 3, 2]))
print(min_fee([8, 4, 2, 3, 9, 23, 6, 8]))
# 결과
# 39
# 10
# 32
# 188
풀이 (1)
풀이 (2)
반응형
'Algorithm(알고리즘) > Greedy Algorithm' 카테고리의 다른 글
4) 수업 겹치지 않게 수강하기 (0) | 2021.05.16 |
---|---|
2) 세 사람의 카드게임에서 한장씩 뽑아 가장 큰 곱 출력 함수 (0) | 2021.05.16 |
1) 최소 동전으로 거슬러주기(greedy algorithm) (0) | 2021.05.16 |
댓글