문제풀이(Problem Solving)

백준, BOJ, 2217번 C++ [CPP]

게임이 더 좋아 2021. 6. 28. 20:50
반응형
728x170

 

음.. 그냥 생각하고 푸는 문제다.

수학문제같다.

 

메모리가 192다.

128 + 64 를 의도한 건지는 모르겠다.

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

 


 

 

#맞은 풀이

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

using namespace std;

int N;
int size;
vector<int> vec;

int M = 0;

int main(){
    cin >> N;
    size = N;
    while(N--){
        int a;
        cin >> a;
        vec.push_back(a);
    }
    sort(vec.begin(),vec.end()); // 오름차순 정렬
    

   
    //큰 것부터 차례로 더함
    for(int i = 1; i<=size; i++){
        M = max(M, vec[size-i]*i);
    }

    
    cout << M ;
    
    
}

 

딱히 그런 것은 없고

생각을 해보면

전부다 합치는 것도 아니고

가장 센 것부터 합치면 될 것같다.

 

그래서 정렬 후 가장 큰 로프부터 합쳤다.

i가 선택한 로프의 수

M이 선택한 로프 중에서 가장 하중이 큰 값.

 

물론 여기서 더 추가하자면

꼭 모든 로프를 더해야할 필요는 없다.

중간에 종료조건도 달아도 되지만..

그냥 다 돌리기로 했다.

 

당연히 선택한 로프 중 가장 작은 값에 로프의 개수를 더하면 최대 무게가 나올 것이다.

수학적으로 당연한 것이다.

 

 

728x90
반응형
그리드형

'문제풀이(Problem Solving)' 카테고리의 다른 글

백준, BOJ, 12865번 C++ [CPP]  (0) 2021.06.29
백준, BOJ, 2217번 C++ [CPP]  (0) 2021.06.29
백준, BOJ, 12582번 C++ [CPP]  (0) 2021.06.22
백준, BOJ, 11659번 C++ [CPP]  (0) 2021.06.22
백준, BOJ, 15657번 C++ [CPP]  (0) 2021.06.21