[아이디어]
어떤걸 고르면 최대중량일까?
> 모든 로프를 쓸 필요는 없다했으니까 튼튼한 애들을 위주로 뽑으면 되지않을까
# 예시 (N=4일때)
[10,15,20,25] 로프가 있다고 치자.
여기서 로프값이 큰 순서대로 먼저 정렬하면
[25,20,15,10]
큰 것부터 하나씩 뽑아보자.
1개 - [25]만 뽑았을때 가능한 최대중량은 25*1=25.
2개 - [25,20] 뽑았을때 가능한 최대중량은 20*2=40
3개 - [25,20,15] 뽑았을때 가능한 최대중량은 15*3=45
4개 - [25,20,15,10] 뽑았을때 가능한 최대중량은 10*4=40
위 예시에서 가능한 최대중량은 3개를 뽑았을때 45가 가장 크므로 답은 45가 된다.
왜?
각각의 케이스에서 최대중량 = (뽑은애들 중 가장 작은값)*(뽑은개수) 이다.
즉, 각각의 케이스를 돌면서 최대중량이 가장 큰 값을 구해주면 된다.
[해결]
import sys
input = sys.stdin.readline
n=int(input().rstrip())
rope=[]
max=0 #최대중량 max
for _ in range(n):
rope.append(int(input().rstrip()))
rope.sort(reverse=True) #rope 값이 큰 순서대로 정렬
for i in range(0,len(rope)): #지금뽑은애 = 제일작은값이 됨.
w=rope[i]*(i+1) #얘를 기준으로 계산했을때
if w>max: #그게 최대값max보다 크다면 최대중량은 w로 갱신
max=w
print(max)
'문제 풀이 > 백준' 카테고리의 다른 글
[백준] 10799번 쇠막대기 (0) | 2024.07.03 |
---|---|
[백준] 1193번 분수찾기 (0) | 2024.07.02 |
[백준] 1541번 잃어버린 괄호 (0) | 2024.07.01 |
[백준] 2435번 기상청 인턴 신현수 (0) | 2024.06.26 |
[백준] 2167번 2차원 배열의 합 (0) | 2024.06.20 |
댓글