-
백준 - 로프 (2217) [C++]문제 풀이/백준 2023. 8. 16. 17:52반응형
이 문제는 그리디를 이용해서 푸는 문제이다. 병렬로 사용했을 때 한 로프에 걸리는 중량은 w/k 이다. 최대 중량은 로프 중 가장 작은 로프에 걸리는 중량의 최대이다. 따라서 (로프 중 최소 중량) = w / k 이고, w = (로프 중 최소 중량) * k 가 된다. 따라서 로프들을 내림차순으로 정렬한 뒤, 최대를 갱신해가며 루프를 돌리면 정답이 나온다.
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int N; vector<int> rope; cin >> N; for (int i = 0; i < N; i++) { int maxWeight; cin >> maxWeight; rope.push_back(maxWeight); } sort(rope.begin(), rope.end(), greater<int>()); int answer = -1; for (int i = 0; i < rope.size(); i++) { int k = i + 1; int weight = rope[i] * k; answer = max(answer, weight); } cout << answer << '\n'; return 0; }
반응형'문제 풀이 > 백준' 카테고리의 다른 글
백준 - 30 (10610) [C++] (0) 2023.08.16 백준 - 주유소 (13305) [C++] (0) 2023.08.16 백준 - 회의실 배정 (1931) [C++] (0) 2023.08.16 백준 - 택배 배송 (5972) [C++] (0) 2023.08.16 백준 - 동전 1 (2293) [C++] (0) 2023.08.15