BOJ/Python

백준 11399번 ATM 파이썬

띵지니어 2022. 4. 17. 20:38

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

 

11399번: ATM

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

www.acmicpc.net

 

내 답안

N = int(input())
p = sorted(list(map(int, input().split())))
result = 0
while N != 0:
    result += p[len(p)-N] * N
    N -= 1
print(result)

 

인출이 가장 빠르게 되는 사람 순으로 정렬을 하는 게 핵심 아이디어이다.

 

 

예제로 주어진 문제를 풀어본다면

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

이런 식으로 나타낼 수 있고,

이걸 알고리즘으로 생각한다면 N = 5 일때

1 - 5개
2 - 4개
3 - 3개
3 - 2개
4 - 1개

를 다 더한값이 답이 된다.

while N != 0:
    result += p[len(p)-N] * N
    N -= 1

이 부분이 위에 설명한 알고리즘이다.

'BOJ > Python' 카테고리의 다른 글

백준 4673번 셀프 넘버 파이썬  (0) 2022.04.27
백준 1912번 연속합 파이썬  (0) 2022.04.22
백준 16953번 A -> B 파이썬  (0) 2022.04.12
백준 1181번 단어 정렬 파이썬  (0) 2022.04.11
백준 12865번 평범한 배낭 파이썬  (0) 2022.03.31