티스토리 뷰
https://www.acmicpc.net/problem/2217
1. 문제
2. 정답 코드
n = int(input())
ropes = []
for _ in range(n) :
ropes.append(int(input()))
ropes.sort() # 오름차순 정렬
# each_max는 각 로프를 사용했을 때 들어올릴 수 있는 중량 합을 담는 리스트
each_max = [x * (len(ropes) - i) for i, x in enumerate(ropes) ]
answer = max(each_max)
print(answer)
- 최종 무게 = 가장 적은 중량을 드는 로프가 들 수 있는 중량 * 병렬 연결된 로프 개수
- each_max 리스트는 i번째 중량이 가장 작은 중량일 때, 병렬 연결된 로프들끼리 들 수 있는 최종 무게를 담는다.
- ropes == [4, 5, 6, 7]일 때, eaxh_max == [4*4, 5*3, 6*2, 7*1] == [16, 15,12, 7]
- 중량 4는 4개의 로프가 들어올릴 수 있으므로 each_max[0] == 16
- 중량 5는 3개의 로프가 들어올릴 수 있으므로 each_max[1] == 15
- each_max 리스트는 Pythonic한 방법인 List Comprehension을 사용하였다.
728x90
'코딩 테스트 > 백준' 카테고리의 다른 글
[백준] 4779번 칸토어 집합 파이썬 정답 코드 (0) | 2023.05.13 |
---|---|
[백준] 2012번 등수 매기기 파이썬 정답 코드 (0) | 2022.11.18 |
[백준] 11399번 ATM 파이썬 정답 코드 (0) | 2022.11.18 |
[백준] 2839번 설탕 배달 파이썬 정답 코드 (0) | 2022.11.18 |
[1920번] 수 찾기 파이썬 정답 코드 (0) | 2022.05.01 |