Rego의 블로그
백준 2217 파이썬 로프 본문
https://www.acmicpc.net/problem/2217
문제는 이렇다. 여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다. k개의 로프를 사용하여 중량이 w인 물체를 들어올릴 때, 각각의 로프에는 모두 고르게 w/k 만큼의 중량이 걸리게 된다.
모든 로프를 사용해야 할 필요는 없으며, 임의로 몇 개의 로프를 골라서 사용해도 된다.
로프를 저장할 리스트와 그를 이용해 들어올릴 수 있는 중량을 저장할 리스트를 만든다. 로프 리스트를 들 수 있는 중량의 내림차순으로 정렬하면 이해가 좀 더 쉬워진다.
예를 들어 3개의 로프 [40, 15, 10]가 있다.
case 1. [40] 로프 1개로는 w = 40 * 1 = 40인 물체를,
case 2. [40]과 [15] 로프로는 상대적으로 약한 로프인 [15] 로프를 기준으로 고르게 중량이 걸려
w = 15 + 15 = 15 * 2 = 30인 물체를,
case 3. [40]과 [15], [10] 로프로는 가장 약한 로프인 [10] 로프 기준으로
w = 10 + 10 + 10 = 10 * 3 = 30인 물체를 들어올릴 수 있다.
이를 토대로 코드를 짰다. 간단히 말해 로프 리스트를 내림차순으로 정리한 후
"로프_리스트[n] * (n+1)를 모아 만든 리스트 내 최댓값"을 출력하도록 하면 된다는 것이다.
n = int(input())
r_lst = []
weight = []
for i in range(n):
rope = int(input())
r_lst.append(rope)
r_lst.sort(reverse=True)
for j in range(n):
weight.append(r_lst[j]*(j+1))
print(max(weight))
'BEAKJOON' 카테고리의 다른 글
백준 5543 파이썬 상근날드 (0) | 2021.09.26 |
---|---|
백준 9372 파이썬 상근이의 여행 (0) | 2021.09.25 |
백준 17478 파이썬 재귀함수가 뭔가요? (0) | 2021.09.23 |
백준 1874 파이썬 스택 수열 (0) | 2021.09.21 |
백준 9655 파이썬 돌 게임 (0) | 2021.09.20 |