minhui study
백준 2217번 루프 (python, c++) 본문
https://www.acmicpc.net/problem/2217
만약 로프가 { 10, 80, 50, 5 }가 있다고 가정해보자
내림차순으로 정리하면 { 80, 50, 10, 5 } 이렇게 되는데 이때 중량이 각각의 루프에 똑같이 걸리므로
80*1 또는 50*2, 10*3, 5*4 중 가장 큰 값을 고르면 된다. 즉, 가장 무거운 중량을 들 수 있는 루프는 1개 사용하거나 무거운 중량을 못드는 루프 기준으로 루프를 여러개 사용하거나 이 중 중량을 더 많이 들 수 있는 것을 선택하는 것이다.
<python>
n=int(input())
arr=[]
for i in range(n):
rope=int(input())
arr.append(rope)
arr.sort(reverse=True)
weight=0
for i in range(n):
if weight < arr[i]*(i+1) :
weight = arr[i]*(i+1)
print(weight)
<C++>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int input;
int weight = 0;
cin >> input;
vector<int> arr(input);
for (int i = 0; i < input; i++) {
cin >> arr[i];
}
sort(arr.begin(), arr.end(), greater<int>());
for (int i = 0; i < input; i++) {
if (weight < arr[i] * (i + 1)) {
weight = arr[i] * (i + 1);
}
}
cout << weight;
}
'백준 문제풀이 > 그리디 알고리즘' 카테고리의 다른 글
백준 1541번 잃어버린 괄호 (python) (0) | 2020.06.01 |
---|---|
백준 10610번 30 (python, c++) (0) | 2020.06.01 |
백준 5585번 거스름돈 (python, c++) (0) | 2020.06.01 |
백준 1931번 회의실배정 (python, C++) (0) | 2020.05.25 |
백준 11047번 동전 0 (python, C++) (0) | 2020.05.24 |
Comments