본문 바로가기

Python/백준

#12 [python] 2217번: 로프

728x90

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

 

2217번: 로프

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

www.acmicpc.net

 

✔️ 문제 분석

그리디, 정렬을 이용하여 출력

k개의 로프를 사용하여 중량이 w인 물체를 들어올릴때 w/k만큼 중량이 걸리게 된다 이때 물체의 최대 중량

 

ex) 

2

10

15

n = 2이고 rope=[10,15] 일때 10과 15의 무게를 버틸수 있는 2개의 rope는 10이 최대로 버틸 수 있는 무게이므로 20의 무게가 최대의 무게가 됨

 

 코드 분석

첫줄에는 로프의 수: n

두번째 ~ n+1번째 줄 까지는 각 로프가 들 수 있는 최대의 무게: k

 

 

n 입력

rope 리스트로 입력

rope 내림차순으로 정렬

sort()로 정렬 후 정렬된 중앙 값을 차례로 확인후 (현재의 중량 * 이후 남은 중량 갯수 값)이 answer보다 크면 answer 값 갱신하여 출력

 

💫 코드

n = int(input())
rope = []

for _ in range(n):
    rope.append(int(input()))
rope.sort()

answer = 0
for i  in range(n):
    answer = max(answer, rope[i] * (n-i))

print(answer)

 

'Python > 백준' 카테고리의 다른 글

#14 [python] 11399번: ATM  (0) 2023.10.21
#13 [python] 1026번: 보물  (0) 2023.10.21
#11 [python] 1931번: 회의실 배정  (0) 2023.10.19
#10 [python] 11047번 동전 0  (0) 2023.10.18
#9 [python] 백준 10156번: 과자  (0) 2023.10.17