반응형
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 |