업데이트:

카테고리: ,

1. 문제

문제는 링크에 들어가면 있다.

2. 정답 코드

문제의 내 정답 코드는 다음과 같다.

import sys
read = sys.stdin.readline
N = int(read())

weight_array = []
for _ in range(N):
    weight_array.append(int(read()))

# weight를 maximum 부터 k개를 세서 k개의 로프 중 제일 못드는 것의 곱하기 k가 최대 출력 무게이다.
# 따라서 weight를 내림차순으로 정렬
weight_array.sort(reverse=True)

result_array = []
for k in range(N):
    maximum_weight = weight_array[k]*(k+1)
    result_array.append(maximum_weight)
print(max(result_array))




3. 문제 풀이

이 문제는 로프별 무게를 내림차순으로 정렬한 뒤, 최대 중량을 찾게 되는데 방법은 k-1 번째의 로프에 k를 곱하는 것이다. 어려운 문제는 아닌데 알게된 것이 있다. input()보단 sys.stdin.readline()를 쓰는게 속도가 더 빠르고, array를 slicing 하는게 꽤나 시간이 오래걸리는 것 같으니 주의하자.

최대 1 분 소요