1. 문제 설명
https://www.acmicpc.net/problem/2217
2. 아이디어
아주 간단한 수학문제.
로프의 개수 n을 입력받고 각 로프가 버틸 수 있는 최대 중량을 입력받은 후, 오름차순으로 정렬한다.
다만 여기서 주의할 점이 있다.
처음에 가장 작은 값의 로프를 기준으로 로프의 개수 n을 곱해주면 끝날 거라 생각했었는데,
로프를 안 써도 된다는 조건에 의해서 너무나 당연하게 오답 판정이 난다.
예를 들어, [5, 100, 110] 의 값을 가지는 3개의 로프가 있다면, 굳이 한계가 5밖에 안 되는 로프를 써야할까?
즉, 5의 값을 갖는 로프를 버렸을 때 100 * 2가 로프가 버틸 수 있는 최대 중량이 된다.
3. 코드
def solution():
cnt_rope = int(input())
each_limit = []
max_weight = []
for _ in range(cnt_rope):
each_limit.append(int(input()))
each_limit.sort()
for idx in range(cnt_rope):
max_weight.append(each_limit[idx] * (cnt_rope - idx))
print(max(max_weight))
solution()