Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

공삼이칠

백준 11399번 ATM [Python 3] 본문

알고리즘/python

백준 11399번 ATM [Python 3]

빔설 2022. 3. 21. 10:12

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

 

11399번: ATM

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

www.acmicpc.net

1차 제출 코드

import sys
list2=[]
time=0
n=int(sys.stdin.readline())
list1=list(map(int,sys.stdin.readline().split()))
list1.sort()
for m in range(n):
    time+=list1[m]
    list2.append(time)
print(sum(list2))

 필요한 시간의 합의 최솟값을 구하려면 돈을 인출하는 데 걸리는 시간이 적은 순으로 서야 한다. 

 

 따라서 각 정렬을 하는 과정을 넣었다. (sort() 함수)

 

2차 제출 코드

import sys
n=int(sys.stdin.readline())
list1=list(map(int,sys.stdin.readline().split()))
list1.sort()
for i in range(1,n):
    list1[i]+=list1[i-1]
print(sum(list1))

 1차 제출을 하고 나서도, 여전히 남는 찝찝함이 있다. 굳이 list를 두 개나 썼어야 했냐는 점과 굳이 time이라는 변수를 거쳐서 계산을 해야하냐는 점이다. 

 

 그래서 떠오른 코드가 위의 2차 제출 코드이다. 애초에 계산을 하면서 list의 항목값을 넣는 것이다. 중간에 time이라는 걸 거치지 않고. 변수를 줄이니 코드가 확연히 깔끔해졌다. 2차 제출 코드도 정답 처리를 받았다.