문제
코드
My answer
import sys
input = sys.stdin.readline
rope=[]
n=int(input())
for i in range(n):
rope.append(int(input()))
rope.sort(reverse=True)
answer=[(i[0]+1)*i[1] for i in enumerate(rope)]
print(max(answer))
Another answer
n=int(input())
maximum=sorted([int(input()) for _ in range(n)],reverse=True)
w=[maximum[i]*(i+1) for i in range(n)]
print(max(w))
풀이
그리디 연습 문제이며, 문제만 잘 이해하면 코드는 쉽다. 모든 밧줄을 쓰지 않아도 되기 때문에 모든 경우의 수를 구하면 된다.
우선 이 문제의 핵심은 들 수 있는 최대 중량은 "사용한 밧줄 중 가장 작은 밧줄*사용밧줄갯수" 이다.
예를 들어,
밧줄이 3종류일 경우 14,22,25 가 있을 때, 밧줄을 1개 쓸 때 최대 중량은 25*1=25, 2개 쓸 때는 22와 25밧줄을 사용하여 22*44, 3개 쓸 때는 14*3=42가 된다. 따라서 밧줄을 2개 쓰는 경우가 최대가 된다.
728x90
반응형
'코딩테스트 > 백준[Python]' 카테고리의 다른 글
[Python] 백준 #11508- 2+1 세일 (0) | 2023.08.23 |
---|---|
[Python] 백준 #1758- 알바생 강호 (0) | 2023.08.23 |
[Python] 백준 #2828 - 사과 담기 게임 (0) | 2023.08.23 |
[Python] 백준 #14916- 거스름돈 (0) | 2023.08.23 |
[Python] 백준 #1343- 폴리오미노 (0) | 2023.08.23 |