문제 유형 ) 그리디, 정렬
문제 ) N 개의 로프가 있는데 이걸로 물건을 들어올릴 수 있다. 이 로프의 굵기나 길이가 달라서 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하지만, 여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다.
k 개의 로프를 사용하여 중량이 w인 물체를 들어올린다면 w/k만큼의 중량이 걸리게 된다.
각 로프들에 대한 정보가 주어졌을 때, 이 로프들을 이용하여 들어올릴 수 있는 물체의 최대 중량은?
예를 들어 5개의 로프가 있다고 할 때 ,
이때 각 로프는 버틸 수 있는 최대 중량이 주어진다.
array = [ 27, 23, 15, 11, 3 ]
이렇게 있다면
- 로프가 1개라면 27 * 1 = 27
- 2개 23 * 2 = 46
- 3개 15 * 3 = 45
- 4개 11 * 4 = 44
- 5개 3 * 5 = 15
-> 로프들을 이용해서 들어올릴 수 있는 물체의 최대 중량을 구해내는 것이기 때문에 답은 46 이다!
-> 이걸 식으로 나타내면
for i in range(5):
result.append(array[i] * (i+1))
-> result 라는 리스트를 만들어서 결과값을 넣어주고 여기서 최댓값을 꺼내면 끝!
'Hello World! > Algorithm' 카테고리의 다른 글
백준 2960 에라토스테네스의 체 - python (0) | 2021.03.16 |
---|---|
중복을 제거하는 자료구조 set (python 👀 ) (0) | 2021.03.15 |
백준 1003 피보나치 함수 - python (0) | 2021.03.10 |
백준 2748 피보나치 수 2 - python (0) | 2021.03.08 |
백준 2747 피보나치 수 - python (0) | 2021.03.01 |