백준 문제풀이

2217번: 로프 / silver 4 / 그리디, 정렬

RonLee 2023. 3. 24. 18:54

https://www.acmicpc.net/problem/2217

 

2217번: 로프

N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하

www.acmicpc.net

'''
2217번: 로프 / silver 4 / 그리디, 정렬
'''
import sys

input = sys.stdin.readline

# 1. 입력 받기
n = int(input())
rope = []
for _ in range(n):
    rope.append(int(input()))
# 2. 로프 리스트 오름차순 하기
rope.sort(reverse=True)
# 3. 최대 중량 구하기
res_weight = 0
for i in range(len(rope)):
    rope_cnt = i + 1
    if res_weight < rope[i] * rope_cnt:
        res_weight = rope[i] * rope_cnt
print(res_weight)

# 1. 입력 받기

 

# 2. 로프 리스트 오름차순 하기 (정렬)

 

# 3. 최대 중량 구하기 (그리디)

 

- 로프의 개수가 1개일 때 : (가장 큰 값 로프 값) 최대 중량

- 로프의 개수가 2개일 때 : (두번째로 큰 값 로프 값 * 2)  최대 중량

- 로프의 개수가 3개일 때 : (세번째로 큰 값 로프 값 * 3)  최대 중량

(생략..)

해당 반복문을 만들면 된다.

로프가 n개일때, 최대 중량이 될 수 있는 값들을 비교해서 가장 큰 최대 중량을 구한다!