Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions 02_회의실_배정/hyoz/code.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
n = int(input())
meetings = [list(map(int, input().split())) for _ in range(n)]

# 종료시간 기준 정렬
meetings = sorted(meetings, key=lambda x: (x[1], x[0]))

answer, time = 0, -1
for st, en in meetings:
if st >= time:
time = en # 기준 시간(time)을 종료 시간으로 업데이트
answer += 1
print(answer)
110 changes: 110 additions & 0 deletions 02_회의실_배정/hyoz/description.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "9918c08e-08cd-4c7b-8f16-808fc00edfec",
"metadata": {},
"source": [
"# Description"
]
},
{
"cell_type": "markdown",
"id": "f2cc0507-1a28-43fa-8e0a-71452acdd833",
"metadata": {},
"source": [
"* 문제: [회의실 배정](https://www.acmicpc.net/problem/1931)\n",
"* 문제 요약\n",
" * N개의 회의 시간이 주어질 때, 하나의 회의실에서 진행 가능한 회의의 최대 개수를 구하는 문제이다.\n",
" * 입력\n",
" * 회의 개수 N: 1이상 10만 이하의 자연수\n",
" * 회의 시작 시간과 종료 시간: 231-1보다 작거나 같은 자연수 또는 0\n",
" * 출력: 회의실을 사용할 수 있는 최대 회의 개수 (정수)\n",
"* 문제 유형: 이진 탐색"
]
},
{
"cell_type": "markdown",
"id": "fd7526aa-d0d3-474b-8afc-43cf5f207a33",
"metadata": {},
"source": [
"# History of Code"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "e58b0e2e-5429-483c-8ae3-a67a041c0417",
"metadata": {},
"outputs": [
{
"name": "stdin",
"output_type": "stream",
"text": [
" 11\n",
" 1 4\n",
" 3 5\n",
" 0 6\n",
" 5 7\n",
" 3 8\n",
" 5 9\n",
" 6 10\n",
" 8 11\n",
" 8 12\n",
" 2 13\n",
" 12 14\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"4\n"
]
}
],
"source": [
"'''\n",
"시간 복잡도: O(NlogN)\n",
"\n",
"구현 순서\n",
"1. 입력 받은 배열에 대해 정렬한다. 조건은 1. 종료시간, 2. 시작시간을 기준으로 한다. → O(NlogN)\n",
"2. 위 정렬값을 기준으로 가장 빨리 종료되는 시간을 최선의 값으로 고려하여 반복적으로 탐색한다. (그리디) → O(N)\n",
"'''\n",
"n = int(input())\n",
"meetings = [list(map(int, input().split())) for _ in range(n)]\n",
"\n",
"# 종료시간 기준 정렬\n",
"meetings = sorted(meetings, key=lambda x: (x[1], x[0]))\n",
"\n",
"answer, time = 0, -1\n",
"for st, en in meetings:\n",
" if st >= time: \n",
" time = en # 기준 시간(time)을 종료 시간으로 업데이트\n",
" answer += 1\n",
"print(answer)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.13"
}
},
"nbformat": 4,
"nbformat_minor": 5
}