728x90
https://www.acmicpc.net/problem/2217
문제
여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다. k개의 로프를 사용하여 중량이 w인 물체를 들어 올릴 때, 각각의 로프에는 모두 고르게 w/k 만큼의 중량이 걸리게 된다.
각 로프들에 대한 정보가 주어졌을 때, 이 로프들을 이용하여 들어올릴 수 있는 물체의 최대 중량을 구해내는 프로그램을 작성하시오. 모든 로프를 사용해야 할 필요는 없으며, 임의로 몇 개의 로프를 골라서 사용해도 된다.
풀이
이 문제가 왜 ATM 보다 등급이 낮은 지 모르겠네요.
일단 병렬로 연결하지 않고 제일 무거운 중량을 들 수 있는 로프가 선택이 될 수 있습니다.
그다음은 병렬의 차례입니다.
병렬은 결국 가장 가벼운 중량 x 로프 수만큼 들 수 있습니다.
파이썬 코드
1
2
3
4
5
6
7
8
9
10
11
|
N = int(input())
rope = []
for i in range(N):
temp = int(input())
rope.append(temp)
rope.sort()
answer = 0
for i in range(N):
answer = max(answer,rope[i]*(N-i))
print(answer)
|
cs |
처음에는 for문 없이 제일 작은 min값과 max값만 따졌습니다.
자꾸 틀렸다고 해서 문제를 다시 읽어보니 모든 로프를 사용할 필요는 없다고 하네요??
즉 1 20 15 이런 로프가 있을 때 1은 버려도 된다는 얘기입니다.
이 점을 유의해서 푸시면 통과할 수 있으리라고 느낍니다.
728x90
'알고리즘 > ps' 카테고리의 다른 글
[python] 백준 9020 골드바흐의 추측 (0) | 2020.08.02 |
---|---|
백준 10610 python 문제 풀이 (0) | 2020.07.29 |
[python] 프로그래머스 - 체육복 (0) | 2020.07.06 |
[python] 프로그래머스 - 완주하지 못한 선수 (0) | 2020.07.05 |
[BOJ] 백준 15829 Hashing (0) | 2020.07.02 |