언어: 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로 바꾸는 게 더 효율적이다. 왜지
'BOJ' 카테고리의 다른 글
[백준/BOJ] python 10988번 팰린드롬인지 확인하기 (0) | 2023.01.25 |
---|---|
[백준/BOJ] python 10448번 유레카 이론 (0) | 2023.01.25 |
[백준/BOJ] python 15552번 빠른 A+B (0) | 2023.01.25 |
[백준/BOJ] python 2309번 일곱 난쟁이 (0) | 2023.01.25 |
[백준/BOJ] python 2231번 분해합 (0) | 2023.01.25 |