백준 1931 회의실 배정

2021. 5. 11. 17:12· 알고리즘/백준(BOJ)
반응형

그리디 알고리즘 문제로, 1개의 회의실에 최대 몇 개의 회의를 배정할 수 있는지 찾는 문제이다.

그리디 알고리즘으로 풀어야한다는 것만 생각할 수 있으면 쉽게 풀 수 있는 문제다.

 

우선, 회의가 끝나는 순서대로 회의를 지정한다.

첫 번째 회의부터 배정을 하고 첫 회의의 끝나는 시간을 기록한다.

그 다음 종료되는 회의의 시작 시간과 이전 회의의 끝나는 시간을 비교하여 이전 회의의 끝나는 시간보다 시작 시간이 큰 경우만 추가하고, 끝나는 시간을 갱신하고 배정 카운트를 끝낸다. 이렇게 모든 회의를 끝까지 조회해보고 최종 카운트된 숫자를 출력해주면 된다.

#define _CRT_SECURE_NO_WARNINGS

#include <cstdio>
#include <stdlib.h>
#include <string.h>

typedef struct room {
	int start, end;
} ROOM;

int compare(const void* a, const void* b) {
	ROOM info1 = *(ROOM*)a;
	ROOM info2 = *(ROOM*)b;

	if (info1.end == info2.end) {
		return (info1.start > info2.start ? 1 : (info1.start == info2.start ? 0 : -1));
	}
	else {
		return (info1.end > info2.end ? 1 : -1);
	}
}

int main() {
	int N;
	scanf("%d", &N);

	ROOM* nArr = (ROOM*)malloc(sizeof(ROOM) * N);
	memset(nArr, 0, sizeof(ROOM) * N);

	for (int i = 0; i < N; ++i) {
		scanf("%d %d", &nArr[i].start, &nArr[i].end);
	}

	qsort(nArr, N, sizeof(nArr[0]), compare); // 회의가 끝나는 순서대로 정렬

	int cnt = 0;
	int last_end_time = 0;

	for (int i = 0; i < N; ++i) {
		if (i == 0) {
			cnt++;
			last_end_time = nArr[i].end;
		}
		else if (last_end_time <= nArr[i].start) {
			cnt++;
			last_end_time = nArr[i].end;
		}
	}

	printf("%d\n", cnt);

	free(nArr);

	return 0;
}
반응형

'알고리즘 > 백준(BOJ)' 카테고리의 다른 글

백준 1655 가운데를 말해요  (0) 2021.05.09
백준 4386 별자리 만들기  (0) 2021.05.06
백준 9372 상근이의 여행  (0) 2021.05.05
백준 1197 최소 스패닝 트리  (0) 2021.05.05
백준 1708 볼록 껍질  (0) 2021.04.29
'알고리즘/백준(BOJ)' 카테고리의 다른 글
  • 백준 1655 가운데를 말해요
  • 백준 4386 별자리 만들기
  • 백준 9372 상근이의 여행
  • 백준 1197 최소 스패닝 트리
오뚜깅
오뚜깅
오뚜깅
오뚜깅
오뚜깅
전체
오늘
어제
  • 분류 전체보기
    • 취업인생
    • Programming
      • C & C++
      • Python
      • OpenCV
      • PCL
      • ROS
      • Deep learning
      • Network
    • 알고리즘
      • 이론
      • 백준(BOJ)
      • 프로그래머스(Programmers)
    • Project
    • IT
      • 우분투
    • 일상
      • 말씀 묵상
      • 끄적임
      • 영어 일기

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 2292
  • clustering
  • cuda설치
  • cv_bridge
  • PointCloudLibrary
  • installcuda
  • c++code
  • tensorflowversion
  • cudaversion
  • OtsuAlgorithm
  • 백준2231
  • pytorch
  • CUDA
  • opencv
  • 백준2798
  • installubuntu
  • installcudnn
  • imageclustering
  • 사용자지정정규화공식
  • CuDNN
  • graphicdriver
  • kmeansclustering
  • C++
  • pointcloud
  • 딥러닝환경구축
  • rospy
  • 우분투
  • cuda9.0
  • DeepLearning
  • 오츠알고리즘

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
오뚜깅
백준 1931 회의실 배정
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.