728x90
    
    
  https://www.acmicpc.net/problem/2217
2217번: 로프
N(1≤N≤100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하지만
www.acmicpc.net
문제
여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다. 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 |