BOJ

[백준/BOJ] python 2217번 로프

kyj0015 2023. 1. 25. 21:42

언어: python

번호: 2217

제목: 로프

등급: 실버 4

풀이 과정:

로프를 모두 사용하는 게 아니라 몇 개만 골라서 사용할 수 있고, 각각의 로프는 w/k만큼의 중량이 걸리게 되니 최대 중량을 구하기 위해서는 최대 중량이 큰 로프부터 골라서 써야 한다. 숫자를 입력받아 큰 것부터 정렬하고, 고른 로프 중 가장 최대 중량이 낮은 로프* 로프의 수가 전체의 최대 중량이다. 로프를 하나씩 추가하면서 비교하면서 최댓값을 구한다.

코드:

 
# 2217
import sys
IN = sys.stdin.readline

n = int(IN())
rope = [0]*10001

for _ in range(n):
    rope[int(IN())] += 1
m, s = 0, 0

for i in range(10000, -1, -1):
    s += rope[i]
    m = max(m, i*s)
print(m)

 

메모:

코드를 짤 때 리스트에 큰 숫자를 넣는 것보다는 큰 리스트의 특정 요소를 1로 바꾸는 게 더 효율적이다. 왜지