백준 알고리즘 11399번
11399번: ATM
첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)
www.acmicpc.net
11399번
첫째 줄에 사람의 수가 들어오고 둘째 줄에 각 사람이 돈을 인출하는데 걸리는 시간이 주어진다.
각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 구해서 출력하면 된다.
문제 해결
그리디 알고리즘을 적용해서 풀었다.
각 사람이 돈을 인출하는데 필요한 시간들을 입력받아서 정렬하고
정렬한 순서대로 ATM기를 사용하면 된다.
왜냐면 가장 적은 시간이 걸리는 사람부터 ATM기를 사용하게 되면서 뒤에 사람들이 가장 적은 시간동안 기다릴 수 있게 된다.
코드
def main():
n = int(input())
data = list(map(int, input().split()))
data.sort()
result = 0
for i in range(n):
result += data[i] * (n-i)
print(result)
if __name__ == '__main__':
main()
성공하기 전에 2번이나 틀렸는데
처음에 각 사람들이 돈을 인출하는데 필요한 시간들을 입력받을 때 문자열로 입력받아서 정렬해서 그런 거였다..
멍청이... 파이썬으로 알고리즘 푸는게 얼마 안되서 그런 걸로.. 타협...
728x90
'Algorithm' 카테고리의 다른 글
백준 2947번 <나무 조각> (0) | 2021.01.14 |
---|---|
백준 1931번 <회의실 배정> (0) | 2021.01.13 |
백준 11047번 <동전 0> (0) | 2021.01.09 |
백준 12101번 <1, 2, 3 더하기 2> (0) | 2020.09.02 |
백준 12865번 <평범한 배낭> (0) | 2020.09.01 |
댓글