퍼펙트코딩
퍼펙트코딩
퍼펙트코딩
전체 방문자
오늘
어제
  • 분류 전체보기 (35)
    • C++ (4)
    • Phython (1)
    • C (2)
    • 프로그램 에러 (3)
    • 공부 정리글 (1)
      • 자료구조 (0)
    • 백준 (23)
      • GOLD (5)
      • BRONZE (8)
      • SILVER (10)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • BOJ 23972
  • 백준 9084번
  • 백준 10807
  • BOJ10807
  • 3003 C++
  • c++
  • 백준 3003
  • 백준 1715번
  • 9084 C++
  • 백준 23972
  • 10807 C++
  • 백준 3003번
  • BOJ 3003
  • BOJ 9084
  • 백준
  • 23972 C++
  • 백준 23972번
  • BOJ 1715
  • 1715 C++
  • BOJ 1181

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
퍼펙트코딩

퍼펙트코딩

백준/SILVER

[백준 1931번][C++] 회의실 배정

2022. 7. 29. 22:03
728x90
반응형

그리디 알고리즘 이용 -> 끝나는 시간이 제일 작은 순으로 정렬하여 풀었습니다

 

#include <iostream>
#include <vector>
#include <utility>
#include <algorithm>
using namespace std;

//회의들을 <시작 시간, 끝나는 시간> 순으로 저장
vector<pair<int, int>> consel;

//끝나는 시간이 빠른 순으로 정렬하되 같으면 먼저 시작하는 순으로 정렬
bool cmp(pair<int, int> a, pair<int, int> b) {
	if (a.second == b.second)
		return a.first < b.first;
	else
		return a.second < b.second;
}

int main() {
	//최대 회의 수
	int conselNum = 0;

	//test 케이스
	int test;
	cin >> test;

	//회의 시간을 입력받아 저장
	for (int i = 0; i < test;i++) {
		int input1, input2;
		cin >> input1 >> input2;

		consel.push_back(make_pair(input1,input2));
	}

	//상기 설정한 순서대로 배열
	sort(consel.begin(), consel.end(), cmp);

	//계속 업데이트 해줄 끝나는 시간
	int endTime = -1;

	/*모든 배열을 돌며 끝나는 시간이 endTime보다 이후이면
	업데이트해주고 최대회의 수 증가*/
	for (int i = 0 ;  i <test ; i++) {
		if (endTime <= consel[i].first) {
			endTime = consel[i].second;
			conselNum++;
		}
	}

	cout << conselNum;
}
728x90
반응형

'백준 > SILVER' 카테고리의 다른 글

[백준 1012번][C++] 유기농 배추  (0) 2022.08.05
[백준 11726번][C++] 2×n 타일링  (0) 2022.08.04
[백준 2667번][C++] 단지 번호 붙이기  (0) 2022.08.01
[백준 1463번][C++] 1로 만들기  (0) 2022.07.25
[백준 1966번][C++] 프린터 큐  (0) 2022.07.18
    '백준/SILVER' 카테고리의 다른 글
    • [백준 11726번][C++] 2×n 타일링
    • [백준 2667번][C++] 단지 번호 붙이기
    • [백준 1463번][C++] 1로 만들기
    • [백준 1966번][C++] 프린터 큐
    퍼펙트코딩
    퍼펙트코딩

    티스토리툴바