300x250

1. 제목

- 백준 2217 로프

- BOJ 2217 로프

문제 링크 : 2217번: 로프 (acmicpc.net)

 
 

2217번: 로프

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

www.acmicpc.net

 


2. 풀이 과정

 

1. 로프 내림차순으로 정렬
2. 가장 튼튼한 로프부터 추가하며 최대 중량 계산
3. 최대 중량 = max(로프 수 * 고른 로프 중 가장 약한 로프 중량, 최대 중량).

 


3. 코드

// 1. 로프 내림차순으로 정렬
// 2. 가장 튼튼한 로프부터 추가하며 최대 중량 계산
// 3. 최대 중량 = max(로프 수 * 고른 로프 중 가장 약한 로프 중량, 최대 중량)

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

using namespace std;

bool Compare(int num1, int num2)
{
	if (num1 > num2)
		return true;
	return false;
}

int main()
{
	int N;
	cin >> N;

	vector<int> v(N);

	for (int index = 0; index < N; index++)
		cin >> v[index];

	// 1. 로프 내림차순으로 정렬
	sort(v.begin(), v.end(), Compare);

	int maxWeight = 0;

	// 2. 가장 튼튼한 로프부터 추가하며 최대 중량 계산
	for (int index = 0; index < N; index++)
	{
		// 3. 최대 중량 = max(로프 수 * 고른 로프 중 가장 약한 로프 중량, 최대 중량)
		maxWeight = max(maxWeight, v[index] * (index+1));
	}

	cout << maxWeight << endl;

	return 0;
}
300x250

'<C++ 백준 BOJ> > 그리디' 카테고리의 다른 글

[백준 BOJ1789] 수들의 합 (C++)  (0) 2023.07.02
[백준 BOJ1026] 보물 (C++)  (0) 2023.07.02
[백준 BOJ1931] 회의실 배정 (C++)  (0) 2022.10.10
[백준 BOJ11399] ATM (C++)  (0) 2022.10.10
[백준 BOJ2839] 설탕배달 (C++)  (0) 2022.10.10