공삼이칠
백준 11399번 ATM [Python 3] 본문
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차 제출 코드도 정답 처리를 받았다.
'알고리즘 > python' 카테고리의 다른 글
백준 11866번 요세푸스 문제 0 [Python 3] (0) | 2022.03.30 |
---|---|
백준 2460번 지능형 기차 2 [Python 3] (0) | 2022.03.23 |
백준 10818번 최소, 최대 [Python 3] (0) | 2022.03.16 |
백준 10871번 X보다 작은 수 [Python 3] (0) | 2022.03.16 |
백준 2439번 별 찍기 - 2 [Python 3] (0) | 2022.03.16 |