망나니 AWOS의 일상
article thumbnail

문제 풀이

n명의 사람들이 돈을 인출하는 데 걸리는 시간이 주어지고 n-1번 사람이 돈을 뽑을 때까지 n번 사람은 기다려야 해서 

기다리는 시간(n-1번 사람이 돈을 뽑는 시간)까지 계산해줘야 한다.

 

예제 1을 아래의 그림과 같이 보면

첫째 줄에 5 (사람 인원수)가 주어지고

둘째 줄에 3 1 4 3 2 (각 사람마다 인출하는데 필요한 시간)이 주어진다.

times라는 배열에 3 1 4 3 2를 담고 rs(배열)에 이전 사람이 돈을 뽑을 때까지 기다리는 시간본인이 인출하는데 시간누적하여 각 rs(배열)에 담아주면 된다. 예제에서는 5명이 있기 때문에 rs(배열)에도 5개의 값이 있을 것이다.

설명을 하기 위해서 rs(배열)을 썼지만 그냥 tot과 같은 변수 하나에 값을 누적시켜주면 된다.

 

하지만 여기서 다가 아닌 우리는 돈을 인출하는데 필요한 시간의 합을 최소로 만드는 것에 중점을 둬야 한다.

값을 작게 하는 방법은 해당 times(배열)을 오름차순 정렬하여 이전과 같이 계산하면 된다.

 

완성된 코드!!👍😊 

n = int(input())
times = sorted(map(int,input().split()))
tot = 0
for i in range(len(times)):
    j = 0
    tot += sum(times[j:i+1])
print(tot)
profile

망나니 AWOS의 일상

@AWOS

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!