본문 바로가기
Algorithm

백준 11399번 <ATM>

by seungh2 2021. 1. 12.

백준 알고리즘 11399번

www.acmicpc.net/problem/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

댓글