2217 로프
업데이트:
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 하는게 꽤나 시간이 오래걸리는 것 같으니 주의하자.