3.1. 15이원준 ¶
#include<iostream>
#include<map>
#include<utility>
using namespace std;
int main(){
  int N, ans = 0;
  multimap<int, int, less<int>> arr;
  cin>> N;
  for(int i = 0; i<N; i++){
    int tmp1, tmp2;
    scanf("%d %d", &tmp1, &tmp2);
    arr.insert(pair<int, int>(tmp1, tmp2));
  }
  for(auto it = arr.begin(); it != arr.end();){
    int firstfinish = it->second;
    for(it++; it != arr.end() && it->first < firstfinish; it++){
      int etime = it->second;
      if(etime < firstfinish){
        firstfinish = etime;
      }
    }
    ans++;
  }
  cout<< ans << endl;
}
3.2. 박인서 ¶
#include <iostream>
#include <vector>
#include <algorithm>
typedef std::pair<int, int> pair_int;
std::vector<pair_int> meet;
int main()
{
	int n;
	std::cin >> n;
	for (int i = 0; i < n; i++) {
		int t1, t2;
		std::cin >> t1 >> t2;
		meet.push_back(pair_int(t1, t2));
	}
	std::sort(meet.begin(), meet.end(), [](pair_int t1, pair_int t2){
		return (t1.second == t2.second ? t1.first < t2.first: t1.second < t2.second); });
	int time = 0, cnt = 0;
	for (int i = 0; i < n; i++) {
		if (meet[i].first < time) continue;
		time = meet[i].second;
		cnt++;
	}
	std::cout << cnt;
	return 0;
}













