<내 코드>
N = int(input())
weights = [int(input()) for _ in range(N)]
weights.sort(reverse=True) # 내림차순
for i in range(N):
weights[i] = weights[i] * (i+1)
print(max(weights))
문제 접근 방법
- 로프를 병렬로 연결하면 각 로프에는 w/k만큼의 동일한 중량이 걸린다.
- 즉, 가장 작은 무게를 들 수 있는 로프가 들 수 있는 질량 * 병렬연결 로프 개수 = 최종 무게
- 가장 무거운 무게를 들 수 있는 로프부터 내림차순으로 정렬한다.
처음에는 너무 어렵게 접근해서 복잡하게 생각했다. 그래서 디큐를 활용해 하나씩 빼고 넣고 하려고 했다가 실패했다. 이렇게 단순하게 풀릴지는... 후..
반응형
'알고리즘 문제풀기 > 백준 - Python' 카테고리의 다른 글
[백준 1783] 병든 나이트 - Python (그리디 알고리즘) (0) | 2020.08.28 |
---|---|
[백준 1138] 한 줄로 서기 - Python (그리디 알고리즘) (0) | 2020.08.28 |
[백준 10162] 전자레인지 - Python (그리디 알고리즘) (0) | 2020.08.27 |
[백준 1946] 신입 사원 - Python (그리디 알고리즘, 정렬) (0) | 2020.08.27 |
[백준 2839] 설탕 배달 - Python (그리디 알고리즘) (0) | 2020.08.27 |