728x90
728x90
Swift μ€ν°λ 9μ£Όμ°¨ 6/15 .
μ€ν°λ 3μ£Όμ°¨ μ±ν°μλ "κ³ κΈ λ°μ΄ν° ꡬ쑰μ νμ©" μμ μ€ν, ν, μν λ²νΌ, μ°μ μμ ν, μ°κ²° 리μ€νΈμ λν΄ νμ΅νμμ΅λλ€. μ΄μ κ΄λ ¨λμ μκ³ λ¦¬μ¦ λ¬Έμ νμ΄λ₯Ό μ§ννκ³ , νλ‘κ·Έλλ¨Έμ€μ μ€ν/ν μ±ν°λ₯Ό νμμ΅λλ€.
βοΈ κΈ°λ₯κ°λ°
π‘ μ°Έκ³ μ¬ν
- "λ€μ μλ κΈ°λ₯μ μμ μλ κΈ°λ₯μ΄ λ°°ν¬λ λ ν¨κ» λ°°ν¬λλ€." -> Queue μλ£κ΅¬μ‘°λ₯Ό λ μ¬λ¦Ό
- "μμ μ κ°μλ 100κ° μ΄νμ΄λ€." -> μκ°λ³΅μ‘λμ ν° μν₯μ λ°μ§ μλλ€.
π νμ΄ κ³Όμ
- progresses, speeds λ°°μ΄μ Queue ννλ‘ μκ°ν΄μ, μμ μ΄ λλ κ²½μ°μλ pop ν΄μ£Όλλ‘ νλ€.
- progresses λ°°μ΄μ΄ λΉμ΄μμ λ κΉμ§ μλ μμ μ λ°λ³΅νλ€. (λͺ¨λ μμ μ΄ λλ λκΉμ§)
- νλ£¨κ° μ§λ λ λ§λ€ μμ μ μ§λλ₯Ό κ³μ°νλ€.
- λ°°ν¬κ° κ°λ₯ν κ²½μ° (progresses.first κ° max μΈ κ²½μ°), λ°°ν¬ν μ μλ μμ μ μΉ΄μ΄ν νλ€.
π μ½λ
- Queue λ₯Ό μ§μ ꡬννμ§ μκ³ μμ μΆκ°μμλ Array.append, μμ μμ μμλ Array.removeFirst λ©μλλ₯Ό μ΄μ©νλ€.
- removeFirst λ©μλλ μκ°λ³΅μ‘λκ° O(n) μ΄λ―λ‘, μ λ ₯ λ°μ΄ν°κ° μ»€μ§ κ²½μ°μλ μ κ²½μ°μ.
- progresses λ°°μ΄μμ 첫λ²μ§Έ μμλ₯Ό κ°μ Έμ¬ λμλ Array.first νλ‘νΌν°λ₯Ό μ΄μ©νλ€.
- first νλ‘νΌν°λ Optional κ°μ 리ν΄νλ―λ‘, nil μ²λ¦¬λ₯Ό ν΄μ£Όμ΄μΌ νλ€λ μ μ μ κ²½μ°μ.
βοΈ νλ¦°ν°
π‘ νμ΄ κ³Όμ
- "μΌλ°μ μΈ νλ¦°ν°λ μΈμ μμ²μ΄ λ€μ΄μ¨ μμλλ‘ μΈμ" -> FIFO ꡬ쑰, Queue λ₯Ό λ μ¬λ¦΄ μ μμ
- "μ€μλκ° λμ λ¬Έμλ₯Ό λ¨Όμ μΆλ ₯νλλ‘ νλ€." -> μμ±λ μꡬμ¬νμ λ§κ² μ½λλ₯Ό ꡬννλ©΄ λλ€.
- "λ΄κ° μΈμλ₯Ό μμ²ν λ¬Έμκ° λͺ λ²μ§Έλ‘ μΈμλλμ§ μκ³ μΆλ€" -> λ¬Έμμ μμκ° λ³κ²½λ λλ§λ€ index κ°μ λ³κ²½νλ©΄ λλ€.
- (2) κ°μ₯ μμ μλ λ¬Έμ(J) κ° λ§¨ λ€λ‘ κ°λ κ²½μ° -> λ΄κ° μμ²ν λ¬ΈμλΌλ©΄? location = priorities.count - 1 : location - 1
- (3) κ°μ₯ μμ μλ λ¬Έμ(J) κ° μΆλ ₯λλ κ²½μ° -> λ΄κ° μμ²ν λ¬ΈμλΌλ©΄? break , μλλΌλ©΄? index -= 1
1. μΈμ λκΈ°λͺ©λ‘μ κ°μ₯ μμ μλ λ¬Έμ(J)λ₯Ό λκΈ°λͺ©λ‘μμ κΊΌλ λλ€.
2. λλ¨Έμ§ μΈμ λκΈ°λͺ©λ‘μμ Jλ³΄λ€ μ€μλκ° λμ λ¬Έμκ° ν κ°λΌλ μ‘΄μ¬νλ©΄ Jλ₯Ό λκΈ°λͺ©λ‘μ κ°μ₯ λ§μ§λ§μ λ£μ΅λλ€.
3. κ·Έλ μ§ μμΌλ©΄ Jλ₯Ό μΈμν©λλ€.
π μ½λ
βοΈ λ€λ¦¬λ₯Ό μ§λλ νΈλ
π‘ νμ΄ κ³Όμ
- λ€λ¦¬λ₯Ό 건λκ³ μλ νΈλμ 무κ²μ μμΉλ₯Ό μ μ₯νκΈ° μν ν (λ°°μ΄) μ κ°μ λ§λ λ€. -> bridgeQueue, truckTime
- λκΈ° νΈλμ 첫λ²μ§Έκ° λ€λ¦¬μ μ¬λΌκ° μ μμ λ, 무κ²λ₯Ό λνκ³ bridgeQueue μ truckTime μ κ°μ μΆκ°νλ€.
- λ€λ¦¬λ₯Ό 건λκ³ μλ νΈλμ μμΉλ₯Ό κ³μ°ν΄μ€λ€. -> truckTime μ λΆ 1μ© λν¨
- λ€λ¦¬λ₯Ό 건λλ μ€μΈ 첫λ²μ§Έ νΈλμ΄ λ€λ¦¬λ₯Ό λ€ κ±΄λμλ, 무κ²λ₯Ό λΉΌκ³ bridgeQueue μ truckTime μ κ°μ μ μΈνλ€.
π μ°Έκ³ μ¬ν
- μ²μμ μ½λλ₯Ό μμ±ν λμλ λ€λ¦¬μμ νΈλμ 무κ²λ₯Ό λν λ, λ§€λ² λ°°μ΄μ ν©μ κ³μ°νλ€.
- λμ ν©μ κ°λ μ΄ λ μ¬λΌμ νΈλμ 무κ²λ₯Ό λ§€λ² κ³μ°νλ κ²μ΄ μλ, μΆκ°λκ³ μ μΈλ λμλ§ κ³μ°νλλ‘ νλ€.
- μΌμͺ½ κ²°κ³Ό (λ§€λ² sum μ κ³μ°) vs μ€λ₯Έμͺ½ κ²°κ³Ό (λμ ν©μ μ΄μ©) μ μ΅λ 503 ms -> μ΅λ 131 ms λ‘ μ€μλ€.
π μ½λ
728x90
728x90