[BOJ] 11399. ATM

Jimeaning·2023년 4월 12일
0

코딩테스트

목록 보기
78/143

Python3

문제

https://www.acmicpc.net/problem/11399

키워드

  • 구현

문제 풀이

문제 요구사항

  • 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다.
  • 줄을 서 있는 사람의 수 N과 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다.
  • 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 구해야 한다.

변수 및 함수 설명

n: 줄 서 있는 사람 수
p: 각 사람이 돈을 인출하는데 걸리는 시간 리스트
total: 한 사람이 기다리는 시간
ans: 줄 서 있는 사람이 각각 기다리는 시간 리스트

로직

돈을 인출하는데 필요한 시간의 합이 최소이려면 시간이 적게 드는 사람부터 먼저 뽑으면 된다.
따라서 p를 오름차순으로 정렬한다.

반복문 (p만큼)
total 변수에 각 사람이 돈을 인출하는데 걸리는 시간을 누적한다.
이 값을 ans 리스트에 담는다.

ans 리스트의 총 합을 출력한다.

최종 코드

n = int(input())
p = map(int, input().split())

total = 0
ans = []
p = sorted(p)

for i in p:
    total += i
    ans.append(total)
    
print(sum(ans))

피드백

처음에 문제 첫 문단만 읽고 코드를 작성했다. 틀린 답이 나와서 두 번째 문단까지 읽으니 여러 경우의 수 중 가장 작은 값을 출력하는 문제였다. 문제를 꼼꼼하게 읽고 풀자

profile
I mean

0개의 댓글