반응형
https://www.acmicpc.net/problem/11399
내 답안
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 |