[Python] 백준 11000 강의실 배정

2022. 2. 27. 14:39·CS/알고리즘 & 문제풀이

문제 링크 : https://www.acmicpc.net/problem/11000

 

11000번: 강의실 배정

첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109)

www.acmicpc.net

 

1. 접근 방법

시작 끝 시간을 기반으로 간단한 그리디라 생각했는데, 문제를 다시 읽고 보니 전체 강의 실수를 확인하는 조금 번거로울 수 있는 문제였다.

이를 해결하기 위해 heap을 활용하여 가장 빨리 끝나는 시간 기준으로 고민했다.

 

2. 풀이 코드

🖥python 코드 링크: https://github.com/mintropy/baekjoon_py/blob/master/11000/11000.py

📕코드 해설

시작 시간 기준으로 오름차순 정렬하고, heap에는 끝나는 시간을 저장했다.

각 시작시간을 비교하여 끝나는 시간이 더 빠르다면 바꿔서 넣고, 아니라면 새로 추가했다.

마지막으로 heap의 길이를 출력하면 필요한 강의실을 구할 수 있다.

 

3. 생각 정리

이런 문제에서 push-pop을 연속으로 처리하는 경우 pushpop을 활용하는것이 좋다. 이 문제에서 적극적으로 활용하여 코드량도 줄이며 아마도 속도 증가에도 큰 긍정적 영향이 있었으리라 생각한다.

'CS > 알고리즘 & 문제풀이' 카테고리의 다른 글

[Python] 백준 2866 문자열 잘라내기  (0) 2022.03.13
[Python] 백준 20928 걷는 건 귀찮아  (0) 2022.03.06
[Python] 백준 13164 행복 유치원  (0) 2022.02.27
[Python] 백준 21924 도시 건설  (0) 2022.02.21
[Python] 백준 16562 친구비  (0) 2022.02.20
'CS/알고리즘 & 문제풀이' 카테고리의 다른 글
  • [Python] 백준 2866 문자열 잘라내기
  • [Python] 백준 20928 걷는 건 귀찮아
  • [Python] 백준 13164 행복 유치원
  • [Python] 백준 21924 도시 건설
mintropy
mintropy
민트로피의 하루하루 오늘보다 더 나은 내일
  • mintropy
    민트로피의 민트초코
    mintropy
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 생각 정리
        • 코딩테스트
        • SSAFY
      • 디지털 노트
        • Obsidian.md
        • Notion
      • CS
        • 알고리즘 & 문제풀이
        • AI
        • DB
        • 디자인패턴
      • Projects
      • Python
        • Python Web Framework
      • JavaScript
        • React.js
      • Docker
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    line
    코딩테스트
    백준
    알고리즘
    조건분기
    프로젝트
    Combinatorics
    django
    bfs
    DRF
    Python
    회고
    DP
    trie
    fastapi
    web framework
    파이썬
    카카오
    pydantic
    dfs
    SSAFY
    브루트포스
    project_zero
    markdown
    프로그래머스
    구현
    그리디
    ps
    게임이론
    union-find
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
mintropy
[Python] 백준 11000 강의실 배정
상단으로

티스토리툴바