본문 바로가기
Algorithm

[그리디/Greedy] 백준 11399 ATM - Python

by jangThang 2022. 2. 15.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    11399번: ATM

    첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)

    www.acmicpc.net

     

     

     

    2. 문제 풀이

     ATM에서 대기하는 시간을 구하는 문제입니다.

     

    2022.01.26 - [Algorithm] - [Algorithm] 탐욕적인 그리디 알고리즘, 직관적이고 쉬운 문제해결

     

    [Algorithm] 탐욕적인 그리디 알고리즘, 직관적이고 쉬운 문제해결

     경주마들을 자세히 보면, 양쪽 시야를 차단하는 안대를 끼고 있습니다. 이를 '차안대' 라고 합니다. 말의 눈은 양 옆에 달려 있어 시야가 '350도'나 됩니다. 자기 자신 빼곤 다 보이기 때문에, 다

    star7sss.tistory.com

     사람별로 기다리는 총 시간을 줄이려면, 작업시간이 적은 사람부터 먼저 해야합니다. 마트에서 물건 적은 사람한테 양보해주는 거랑 비슷하죠.(?)

     인출 시간이 적은 사람부터 ATM기를 이용하면 기다리는 시간을 최소로 할 수 있습니다.

     

     

     

    3. 코드

    N = int(input())
    waiting = list(map(int, input().split()))
    
    # 정렬
    waiting.sort()
    
    time = 0 #기다리는 시간
    total = 0 #기다리는 총 시간
    for t in waiting:
        total += (time + t) #여태까지 기다린 시간 + 인출하는 시간
        time += t #t만큼 시간 지남
    print(total)

     정렬 후 인출시간이 적은 사람부터 인출을 합니다.

     한 사람당 소요한 시간은 '대기시간' + '인출시간'입니다. 이들의 총합을 구해 출력합니다.

     

    star가 되고나서 Tistory

    반응형

    댓글