코드 공부

c++ - 11주차

유스베리이 2023. 5. 22. 13:34

<그리디 알고리즘>

그리지 알고리즘 - 현재 상태에서 보는 선택지 중 최선의 선택지가 전체 선택지 중 최선의 선택지라고 가정하는 알고리즘

 

수행과정

1. 해 선택 : 현재 상태에서 가장 최선이라고 생각되는 해를 선택

2. 적절성 검사 : 현재 선택한 해가 전체 문제의 제약 조건에 벗어나지 않는지 검사

3. 해 검사 : 현재까지 선택한 해 집합이 전체 문제를 해결할 수 있는지 검사. 전체 문제 해결 못하면 다시 1. 으로 돌아감

 

 

 

 

 

예제 ) 1931. 회의실 배정

#include <bits/stdc++.h>

using namespace std;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	int N;

	cin >> N;

	vector <pair<int, int>> A(N);

	for (int i = 0; i < N; i++)
	{
		cin >> A[i].second;
		cin >> A[i].first; // 종료시간을 앞에 저장( 정렬할 때 우선순위가 높음)


	}
	sort(A.begin(), A.end());

	int count = 0;
	int end = -1; // 음수로 두는 이유는 자연수 또는 0 이라고 했기 때문


	for (int i = 0; i < N; i++)
	{
		if (A[i].second >= end)
		{
			end = A[i].first;
			count++;

		}



	}
	cout << count;


	return 0;
}