[Softeer] 강의실 배정

rhkr9080·2022년 9월 30일
0

Softeer

목록 보기
8/10

문제링크 : https://softeer.ai/practice/info.do?idx=1&eid=392

💻 문제 풀이 : C++

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

using namespace std;

struct _Classroom {
	int start;
	int end;
};

bool cmp(_Classroom a, _Classroom b)
{
	if (a.end < b.end) return true;
	if (a.end > b.end) return false;
	if (a.start < b.start) return true;
	if (a.start > b.start) return false;
	return false;
}

int main()
{
	int N;
	cin >> N;
	vector<_Classroom> v;
	vector<_Classroom> answer;
	for (int i = 0; i < N; i++)
	{
		int start, end;
		cin >> start >> end;
		v.push_back({ start, end });
	}
	sort(v.begin(), v.end(), cmp);
	// 한개 넣고
	answer.push_back(v[0]);
	// 지금 end와 다음 start 비교
	for (int i = 1; i < v.size(); i++)
	{
		if (v[i].start >= answer.back().end)
			answer.push_back(v[i]);
	}
	cout << answer.size();
	return 0;
}

💻 문제 풀이 : Python

import sys
import heapq

N = int(sys.stdin.readline())
meeting_time = []

for _ in range(N):
    start, end = list(map(int, sys.stdin.readline().split()))

    heapq.heappush(meeting_time, (end, start))

end_time = 0
cnt = 0

while meeting_time:
    if meeting_time[0][1] >= end_time:
        end_time = heapq.heappop(meeting_time)[0]
        cnt += 1
        continue

    heapq.heappop(meeting_time)

print(cnt)

📌 memo 😊

profile
공부방

0개의 댓글