🌞⭐🌜🌈
λ‰΄μ°¨νŠΈ
🌞⭐🌜🌈
  • λΆ„λ₯˜ 전체보기
    • Flutter
    • Android
    • Algorithm
      • Python
    • Test
    • Python
    • 생산성
    • 경제
    • μ˜μ–΄
    • μƒν™œ 팁

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • νƒœκ·Έ
  • λ°©λͺ…둝

곡지사항

νƒœκ·Έ

  • Android
  • enum
  • 갓생
  • Flutter pattern
  • νŠΉμ§•
  • flutter 2.0
  • Image.memory
  • python λ‚΄μž₯ν•¨μˆ˜
  • Flutter 기초 μ‹œλ¦¬μ¦ˆ
  • μ°½μ—…λΆ€νŠΈμΊ ν”„
  • λΌμ΄ν”„ν•΄ν‚ΉμŠ€μΏ¨
  • bloc
  • PYTHON
  • 파이썬
  • flutter webview
  • 넀이비 μ”° 일찍 μžλŠ” 법
  • Python λ‚΄μž₯ ν•¨μˆ˜
  • 일찍 μžλŠ” 법
  • cruscal
  • Firebase
  • getx
  • AssetThumb
  • Flutter ν˜„μž¬
  • flutter
  • Flutter Web
  • Flutter κ³Όκ±°
  • Flutter 미래
  • Flutter 의 역사
  • null safety
  • μ°½λΆ€μΊ 

졜근 λŒ“κΈ€

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
🌞⭐🌜🌈

λ‰΄μ°¨νŠΈ

Algorithm/Python

파이썬 μ•Œκ³ λ¦¬μ¦˜ : λ°±μ€€ 11000번 - κ°•μ˜μ‹€ λ°°μ •

2022. 2. 24. 22:34

이번 ν’€μ΄μ˜ 핡심 νžŒνŠΈλŠ” μš°μ„ μˆœμœ„ 큐 μž…λ‹ˆλ‹€. μš°μ„ μˆœμœ„ 큐λ₯Ό μ΄μš©ν•΄ λ°±μ€€ 11000번 (κ°•μ˜μ‹€ λ°°μ •) 문제λ₯Ό 파이썬으둜 ν’€μ–΄ 보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή 자료ꡬ쑰λ₯Ό 잘 μ‚¬μš©ν•˜μ‹œλ©΄ λ¬Έμ œκ°€ μ‰¬μ›Œμ§€λŠ” 것을 λŠλΌμ‹€ 수 μžˆμ„ 것 μž…λ‹ˆλ‹€.

 

 

이번 κΈ€μ—μ„œ μ•Œμ•„λ³Ό λ‚΄μš©

  • 문제 μ„€λͺ…
  • 문제의 핡심 아이디어
  • 문제 풀이

 

문제 μ„€λͺ…

11000번과 같은 경우 문제 μ„€λͺ… μžμ²΄μ— μ˜€ν•΄μ˜ μ†Œμ§€κ°€ μžˆμŠ΅λ‹ˆλ‹€. μˆ˜κ°•μ‹ μ²­μ˜ λ§ˆμŠ€ν„° κΉ€μ’…ν˜œ μ„ μƒλ‹˜μ΄ μ•„λ‹ˆλΌ μˆ˜κ°•μ‹ μ²­ κ΄€λ¦¬μž κΉ€μ’…ν˜œ μ„ μƒλ‹˜μ΄ 더 μ•Œλ§žλŠ” ν‘œν˜„ κ°™μŠ΅λ‹ˆλ‹€. 즉 이번 λ¬Έμ œλŠ” μˆ˜κ°•μ‹ μ²­μ„ κ΄€λ¦¬ν•΄μ„œ κ°•μ˜μ‹€μ„ μ˜¬λ°”λ₯΄κ²Œ λ°°μΉ˜ν•˜λŠ” 것을 μš”κ΅¬ν•©λ‹ˆλ‹€. κ°•μ˜μ˜ μ‹œκ°„μ΄ μ£Όμ–΄μ§€λ©΄ ν•΄λ‹Ή κ°•μ˜μ— ν•„μš”ν•œ κ°•μ˜μ‹€μ„ λ°°μΉ˜ν•΄μ£ΌλŠ” 것 μž…λ‹ˆλ‹€. μ΄λ•Œ κ°€μž₯ 적게 κ°•μ˜μ‹€μ„ μ‚¬μš©ν•  수 μžˆλŠ” 방법을 묻고 μžˆμŠ΅λ‹ˆλ‹€.

 

문제의 핡심 아이디어

핡심 μ•„μ΄λ””μ–΄λŠ” κ°•μ˜κ°€ κ²ΉμΉ˜λŠ”μ§€ ν™•μΈν•˜λŠ” 것 μž…λ‹ˆλ‹€. κ°•μ˜μ‹€μ΄ μΆ”κ°€λ‘œ ν•„μš”ν•œ 상황은 단 ν•œ κ°€μ§€ 밖에 μ—†μŠ΅λ‹ˆλ‹€. λ°”λ‘œ μ–΄λ–€ ν•œ κ°•μ˜κ°€ λλ‚˜μ§€ μ•Šμ•˜λŠ”λ° λ‹€λ₯Έ κ°•μ˜κ°€ μ‹œμž‘ν•˜λŠ” 것 이죠. 이λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄μ„œλŠ” μš°μ„ μˆœμœ„ 큐λ₯Ό ν™œμš©ν•˜λ©΄ κ°„λ‹¨νžˆ ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μš°μ„ μˆœμœ„ νλž€ 큐의 ν˜•νƒœλ₯Ό κ°€μ§€κ³  μžˆμ§€λ§Œ μ•ˆμ˜ λ…Έλ“œλ“€μ΄ 정렬이 λ˜μ–΄ μžˆλŠ” 큐λ₯Ό λœ»ν•˜λŠ”λ°μš”. 큐에 푸쉬λ₯Ό ν•˜λ©΄ 뒀에 μŒ“μ΄λŠ” 것이 μ•„λ‹ˆλΌ 정렬이 λ˜μ–΄μ„œ 값이 μ €μž₯λ©λ‹ˆλ‹€. μš°μ„ μˆœμœ„ 큐λ₯Ό μ‚¬μš©ν•˜λ©΄ λλ‚˜λŠ” μ‹œκ°„μ΄ κ°€μž₯ λΉ λ₯Έ κ°•μ˜λΆ€ν„° popν•  수 있게 λ©λ‹ˆλ‹€. μ•Œκ³ λ¦¬μ¦˜μ„ μˆœμ„œλ‘œ ν‘œν˜„ν•˜μžλ©΄

 

  1. κ°•μ˜ 리슀트λ₯Ό μ •λ ¬ν•œλ‹€.
  2. 첫 번째 κ°•μ˜κ°€ λλ‚˜λŠ” μ‹œκ°„μ„ μš°μ„ μˆœμœ„ 큐에 μΆ”κ°€ν•œλ‹€.
  3. κ°•μ˜ 리슀트의 1번째 μΈλ±μŠ€λΆ€ν„° λ§ˆμ§€λ§‰κΉŒμ§€ λ°˜λ³΅λ¬Έμ„ μ‹€ν–‰ν•œλ‹€
    1. μš°μ„ μˆœμœ„ 큐에 첫 번째 μΈλ±μŠ€μ— μ ‘κ·Όν•œλ‹€ (항상 λλ‚˜λŠ” μ‹œκ°„μ΄ κ°€μž₯ λΉ λ₯Έ 순)
    2. λ§Œμ•½ κ°•μ˜μ˜ μ‹œμž‘μ‹œκ°„μ΄ μš°μ„ μˆœμœ„ 큐의 첫 번째 μΈλ±μŠ€λ³΄λ‹€ μž‘λ‹€λ©΄ ν•΄λ‹Ή κ°•μ˜μ˜ λλ‚˜λŠ” μ‹œκ°„μ„ μš°μ„ μˆœμœ„ 큐에 μΆ”κ°€ν•œλ‹€.
    3. μ•„λ‹ˆλΌλ©΄ μš°μ„ μˆœμœ„ 큐의 첫 번째 인덱슀λ₯Ό pop ν•œ ν›„ ν•΄λ‹Ή κ°•μ˜μ˜ λλ‚˜λŠ” μ‹œκ°„μ„ μš°μ„ μˆœμœ„ 큐에 μΆ”κ°€ν•œλ‹€.

 

μœ„μ˜ 과정을 μ „λΆ€ 거치게 되면 μš°μ„ μˆœμœ„ 큐의 ν¬κΈ°λŠ” ν•„μš”ν•œ κ°•μ˜μ‹€ 개수만큼이 λ©λ‹ˆλ‹€. λ”°λΌμ„œ μš°μ„ μˆœμœ„ 큐의 크기λ₯Ό 좜λ ₯ν•˜λ©΄ 정닡을 좜λ ₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 더 μžμ„Έν•œ μ΄ν•΄λŠ” μ•„λž˜μ˜ μ½”λ“œλ₯Ό μ°Έμ‘°ν•΄μ£Όμ„Έμš”

 

문제 풀이

import heapq

n = int(input())

lecture_list = [list(map(int, input().split())) for _ in range(n)]

lecture_list.sort()

lecture_queue = []
heapq.heappush(lecture_queue, lecture_list[0][1])

for i in range(1, n):
    if lecture_list[i][0] < lecture_queue[0]:
        heapq.heappush(lecture_queue, lecture_list[i][1])
    else:
        heapq.heappop(lecture_queue)
        heapq.heappush(lecture_queue, lecture_list[i][1])

print(len(lecture_queue))

 

λ§ˆλ¬΄λ¦¬ν•˜λ©΄μ„œ

μ΄μƒμœΌλ‘œ 11000번 문제 풀이λ₯Ό λ§ˆμΉ˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. κ²°κ΅­ μ•Œκ³ λ¦¬μ¦˜ λ¬Έμ œλŠ” 자료ꡬ쑰λ₯Ό 기반으둜 생각해야 ν•©λ‹ˆλ‹€. λ©”λͺ¨λ¦¬ μœ„μ—μ„œ μž‘λ™ν•˜κΈ° λ•Œλ¬Έμ— 자료ꡬ쑰λ₯Ό λ²—μ–΄λ‚  수 μ—†κΈ° λ•Œλ¬Έμ΄μ£ . λ”°λΌμ„œ μœ μ—°ν•˜κ²Œ 자료ꡬ쑰λ₯Ό ν™œμš©ν•  수 μžˆλŠ” λŠ₯λ ₯이 μ•Œκ³ λ¦¬μ¦˜ ν’€μ΄μ—μ„œ μ€‘μš”ν•˜κ²Œ μž‘μš©ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. 그런 μ˜λ―Έμ—μ„œ λ‹€μŒμ—λŠ” 파이썬의 heapq 즉 μš°μ„ μˆœμœ„ 큐와 같은 μžλ£Œκ΅¬μ‘°λ“€μ„ 닀루어 보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€. λΆ€μ‘±ν•œ κΈ€ μ½μ–΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

 

'Algorithm > Python' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

Union find μ•Œκ³ λ¦¬μ¦˜ - Python  (0) 2021.09.29
크루슀칼 μ•Œκ³ λ¦¬μ¦˜ - Python  (0) 2021.09.28
    'Algorithm/Python' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • Union find μ•Œκ³ λ¦¬μ¦˜ - Python
    • 크루슀칼 μ•Œκ³ λ¦¬μ¦˜ - Python
    🌞⭐🌜🌈
    🌞⭐🌜🌈

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”