[파이썬] 백준 BOJ 11399번 ATM

강준호·2023년 3월 19일
0

초고

n = input()
people = list(map(int,input().split()))
people.sort()
time = 0
for i,person in enumerate(people):
    time += person* (len(people)-i)
print(time)

만약)
1 2 3 3 4 의 시간이 걸린다면

1
1+2
1+2+3
1+2+3+3
1+2+3+3+4

이기 때문에 규칙을 발견할 수 있다

위 코드의 복잡도는 O(nlogn)이다.

sort는 함수가 O(nlogn)
enumerate 와 for 에서 O(n) 을 가지기 때문.

개선된 코드

n = input()
people = list(map(int,input().split()))
people.sort()
time = 0
for i in range(n):
    time += people[i] * (n-i)
print(time)
  • 생각해보니 enumerate 안쓰고 그냥 더해도 됐었다..

0개의 댓글