관리 메뉴

풀이 보관함

[C++] 백준 2217번: 로프 본문

problem solving/백준

[C++] 백준 2217번: 로프

viin 2022. 9. 2. 18:10

🔗 문제

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

 

2217번: 로프

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

www.acmicpc.net

 

🖍 풀이

 

뭔 소리인가 이해하는데 3분 더 걸린 문제

 

10, 15 로프를 예를 들자면 10 줄은 10 중량을 15 중량을 15 중량을 감당할 수 있다.

10과 15. 두 줄을 쓴다고 25 중량은 불가하다. 왜냐하면 10줄은 10까지 밖에 견딜 수 없기 때문이다.

그래서 두 줄을 모두 사용한다면 [가장 작은 10줄*사용줄 수] 값인 20이 정답이다.

 

💾  소스

#include <iostream>
#include <algorithm>
#include <vector>

#define MAX 100000
int main()
{
    int N, answer = 0;
    int K[MAX];
    
    //input
    std::cin >> N;
    for(int i=0; i<N; ++i)
        std::cin >> K[i];
    
    //solve
    std::sort(K, K+N); // begin, end
    for(int i=0; i<N; ++i)
    {
        answer = std::max(answer, (N-i)*K[i]);
    }
    
    //output
    std::cout << answer;
    return 0;
}