[ BOJ 2217 ] 중량(Python)

uoayop·2021년 6월 7일
0

알고리즘 문제

목록 보기
88/103
post-thumbnail

문제

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

n개의 로프는 버틸 수 있는 중량이 존재한다.
단, 동시에 들어올리면 중량은 w/n으로 줄어든다.
들 수 있는 최대 중량을 구하면 된다.


문제 풀이

처음엔 중량이 가장 작은 로프 * n 을 하면 되는 게 아닌가 하고 간단하게 생각했다.

  • 반례
3
10
20
30
answer : 40

(10, 20, 30)
세 개의 로프로는가장 작은 로프인 10 * 3 으로 최대 30까지 들 수 있는게 맞다.
하지만 문제에서 모든 로프를 사용할 필요는 없다고 되어있다.

(20, 30)
이 두개의 로프로는 가장 작은 로프인 20 * 2 으로 최대 40까지 들 수 있다.

로프의 개수를 줄여나가면서 확인하는 것이 중요하다.


코드

import sys
input = sys.stdin.readline

n = int(input())
result = []

for _ in range(n):
    result.append(int(input()))

# 가장 작은 로프부터 비교하기 위해 정렬
result.sort()
answer = 0

for i in result:
    answer = max(answer, i * n)
    n -= 1

print(answer)
profile
slow and steady wins the race 🐢

0개의 댓글