알고리즘

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

hminor 2023. 8. 29. 11:01

 

풀이

  • 처음에 해당 문제를 이해하지 못했다.
    • 역시 알고리즘은 잘 읽고 이해하는 것이 중요하다는 것을 새삼 느끼게 되었음...
  • 해당 문제는 여러 로프가 있고 해당 로프가 버틸 수 있는 최대 중량이 있는데
  • 예를 들어
    • 아래 예시처럼
    • 2개의 로프가 주어지며 해당 로프는 [10,15] 의 무게를 버틸 수 있는 최대 중량이 있다고 하자.
    • 그렇다면 1개의 로프만 주어질 경우 가질 수 있는 최대 중량은
      • 10보단 15가 더 크기에 15가 최대 중량이 될 테고
    • 2개의 로프가 주어질 경우엔
      • 10과 15가 모두 버틸 수 있는 중량인 10이 2개인 20이 결과 값이 될 테니까
    • 1개의 로프인 10보다 2개의 로프의 값인 20이 더 크기에 20을 최대 중량으로 볼 수 있다.
  • 위의 방법으로 해당 문제를 해결
import sys
input = sys.stdin.readline
n = int(input())
li = sorted([int(input()) for _ in range(n)], reverse=True)
result, cnt = 0, 1
for i in range(n):
    if li[i]*cnt > result: result = li[i]*cnt
    cnt += 1
print(result)