Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 오블완
- python
- 새로고침
- 고고학 최고의 발견
- 코딩테스트
- React
- redux state값 유지
- 꿀팁 환영
- 드림핵
- 공공데이터 포털
- 창업 300
- 개발
- expo
- php-1
- 부산 맛집 OPEN API
- 프로그래머스
- web-view
- 티스토리챌린지
- 블로그 뉴비
- 훈수 가능
- API 활용 신청
- url 랜더링
- Dreamhack
- react-router-dom
- level3
- 보안
- Redux
- 사업계획서
- apk 빌드
Archives
- Today
- Total
1223v
[BOJ] Python, Ruby 백준 최소 회의실 개수 (19598) 본문
https://www.acmicpc.net/problem/19598
최소힙을 사용한 그리디 문제이다.
우선 받은 배열을 정렬한다
이후, 배열을 순회하며 힙 내에 도착지에 최소값이 다음 start 값보다 작다면 회의실을 연결되서 쓸 수 있다는 뜻이므로, 힙에서 나온 도착지의 최소값을 pop 해준다.
다음 최소힙에 무조건 값을 넣어준다. (회의실 무조건 배정)
python
import sys
import heapq
input = sys.stdin.readline
N = int(input())
s = sorted([list(map(int,input().split())) for _ in range(N)])
hq = []
for start, end in s:
if hq and hq[0] <= start:
heapq.heappop(hq)
heapq.heappush(hq,end)
print(len(hq))
Ruby
require 'set'
require 'priority_queue'
N = gets.to_i
s = Array.new(N) { gets.split.map(&:to_i) }
hq = PriorityQueue.new
s.each do |start, end_time|
if !hq.empty? && hq.min <= start
hq.delete_min
end
hq.push(end_time, end_time)
end
puts hq.length
회고.
간단한 코드임에도 불구하고 초반 정렬을 하지않아 값의 순차적 증가를 해주지 못해 문제가 발생했다.
유기적으로 연결되어있는 구현도 실력을 늘리고, 최소힙에 대한 이해도도 높혀야 겠다..
728x90
'PS' 카테고리의 다른 글
[BOJ] Python 플로이드(11404) (0) | 2025.02.18 |
---|---|
[Programmers] Python 파괴되지 않은 건물 (92344) (0) | 2025.02.17 |
[Programmers] Python, Ruby 프로그래머스 불량 사용자(64064) (0) | 2025.02.15 |
[BOJ] Python, Ruby 백준 고양이는 많을수록 좋다 (27961) (0) | 2025.02.11 |
[Programmers] Python 프로그래머스 스타 수열(70130) (0) | 2025.02.06 |