개발하는 kim-hasa

[c++][BOJ] 로프 본문

Algorithm/BOJ

[c++][BOJ] 로프

kim-hasa 2021. 10. 25. 16:27

https://www.acmicpc.net/problem/2217

 

2217번: 로프

N(1 ≤ N ≤ 100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하

www.acmicpc.net

로프를 병렬연결해서 가장 큰 중량을 들 수 있는 경우를 구하는 문제입니다.

 

로프를 작은 무게부터 정렬한 후에, 특정 index부터 뒤의 모든 로프를 선택한다고 가정하면 

최대로 들 수 있는 무게는 로프의 수 * 특정 index 이다.

 

이 방법으로 모든 경우를 돌려서 가장 큰 값을 리턴한다.

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(){
    int n;
    cin >> n;
    
    vector<int> line;
    
    for(int i=0; i<n; i++)
    {
        int a;
        cin >> a;
        line.push_back(a);
    }
    
    sort(line.begin(), line.end());
    
    int big = 0;
    
    for(int j=0; j<n; j++)
    {
        int sum = line[j] * (n-j);
        
        if(sum > big)
            big = sum;
    }
    
    cout << big;
}

'Algorithm > BOJ' 카테고리의 다른 글

[c++][BOJ] 수들의 합  (0) 2021.10.27
[c++][BOJ] 전자레인지  (0) 2021.10.25
[c++][BOJ] 거스름돈  (0) 2021.10.25
[c++][BOJ] 보물  (0) 2021.10.25
[c++][BOJ][1931] 회의실 배정  (0) 2021.10.21