본문 바로가기
문제 풀이/백준

[백준] 2217번 로프

by ginny. 2024. 7. 1.

 

[아이디어]

어떤걸 고르면 최대중량일까?

> 모든 로프를 쓸 필요는 없다했으니까 튼튼한 애들을 위주로 뽑으면 되지않을까

 

# 예시 (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)

 

댓글