문제풀이) 백준 - 2217 / 로프

velg·2021년 5월 7일
0

문제 링크

문제 요약

1. 들어올릴 수 있는 최대 중량을 구하라.
2. 로프는 들어올릴 수 있는 중량이 정해져있으며 k개의 로프를 병렬로 연결하여 중량이 w인 물체를 들어 올릴 때 
각 로프엔 w/k의 중량이 걸리게 된다.
4. 로프는 모두 사용하지 않아도 되며, 임의로 정해 사용해도 된다.

어떻게 풀어야 할까?

k개의 로프를  1 ~ k개를 사용하는 경우 모두를 체크해야한다.
-> 내림차순 정렬을 하고 차례대로 값을 비교해보자

코드

n = int(input())
lopes = sorted([int(input()) for _ in range(n)], reverse=True)
maxweight = lopes[0]

for i in range(len(lopes)):
  if maxweight < lopes[i] * (i + 1):
    maxweight = lopes[i] * (i + 1)

print(maxweight)

코드 풀이

line 5. 내림차순이기 때문에 항상 iopes[i]값이 최소 중량이 된다.
따라서 lopes[idx] * (i + 1)를 통해 현재 최대 중량 값을 알 수 있고, 비교연산을 통해 최대 중량을 구할 수 있다.
profile
초보 개발자

0개의 댓글