세상을 바꾸는 데이터

[백준 2217번] 로프 - 파이썬 본문

PS Study/BOJ(백준)

[백준 2217번] 로프 - 파이썬

Industriousness 2022. 1. 20. 23:07

문제 링크:

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

 

2217번: 로프

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

www.acmicpc.net

 

  • 병렬로 연결하는 것을 우선순위로 고려해야 한다. 
  • 입력값(로프가 버틸 수 있는 최대 중량)을 오름차순으로 정렬하고, 전체 로프 사용에서 1개 로프만 사용하는 순서대로 최댓값을 도출한다.
    • max((가장 적게 버틸 수 있는 중량 * n), (2번째로 버틸 수 있는 중량 * (n-1)), ........ , (가장 많이 버틸 수 있는 중량 * 1))

 

<풀이>

# 2217번 로프
 

# 그리디 알고리즘 순서: 전체 로프 사용 -> 1개만의 로프 사용 시 최댓값을 최적의 해로 도출


n = int(input())
weight = []
ans = 0

# weight 리스트에 rope 중량 넣기
for i in range(n):
  rope = int(input())
  weight.append(rope)

# weight 정렬
weight.sort()

# 로프 사용 개수에 따라 나올 수 있는 최댓값을 도출
for j in range(len(weight)):
  if weight[j] * n > ans:
    ans = weight[j] * n
  n-= 1

print(ans)

 

[백준 2217번] 로프 - 파이썬

 

 

 

 

 

728x90
반응형
Comments