-
[c++][그리디] 백준 2217번: 로프알고리즘 2022. 4. 24. 16:16
문제 풀이
1. n개의 로프 정보를 배열에 저장한다.
2. 배열을 오름차순으로 정렬한다.
3. 로프 한 개만 사용했을 때 들어올릴 수 있는 최대 중량을 max에 저장한다.
4. 로프를 여러 개 사용했을 때의 최대 중량은 (로프 중 제일 낮은 중량 * 들어올릴 로프의 개수) 이다. 그래서 로프 배열을 오름차순으로 정렬하고 반복문을 돌면서 최대 중량을 찾는다. 이때 최대 중량이 max보다 크면 max에 저장한다.
코드
#include <iostream> #include <algorithm> using namespace std; int main() { int n; int rope[100000]; int max = 0; cin >> n; for (int i = 0; i < n; i++) { cin >> rope[i]; } sort(rope, rope + n); max = rope[n - 1]; for (int i = 0; i < n; i++) { if (max < rope[i] * (n - i)) max = rope[i] * (n - i); } cout << max; return 0; }
'알고리즘' 카테고리의 다른 글
[c++][그리디] 백준 11508번: 2+1 세일 (0) 2022.05.11 [c++][그리디] 백준 1758번: 알바생 강호 (0) 2022.05.10 [c++][구현] 백준 20546번: 기적의 매매법 (0) 2022.03.20 [c++][그래프] 백준 1325번: 효율적인 해킹 (0) 2022.03.20 [c++][그리디] 백준 1343번: 폴리오미노 (0) 2022.03.17