λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

🐺 맀일 μ•Œκ³ λ¦¬μ¦˜

2018 카카였 μ½”λ”©ν…ŒμŠ€νŠΈ 1μ°¨ μ…”ν‹€λ²„μŠ€ JS λ¬Έμ œν’€μ΄

πŸ”—μ§μ ‘ 문제 ν’€λŸ¬κ°€κΈ°

 

 

 

 

문제

 

콘이 셔틀을 타고 μ‚¬λ¬΄μ‹€λ‘œ 갈 수 μžˆλŠ” μ •λ₯˜μž₯ 도착 μ‹œκ° 쀑 제일 λŠ¦μ€ μ‹œκ°μ„ κ΅¬ν•˜μ—¬λΌ

 

  • 셔틀은 09:00λΆ€ν„° 총 n회 tλΆ„ κ°„κ²©μœΌλ‘œ 역에 λ„μ°©ν•˜λ©°, ν•˜λ‚˜μ˜ μ…”ν‹€μ—λŠ” μ΅œλŒ€ mλͺ…μ˜ 승객이 νƒˆ 수 μžˆλ‹€.
  • 셔틀은 λ„μ°©ν–ˆμ„ λ•Œ λ„μ°©ν•œ μˆœκ°„μ— λŒ€κΈ°μ—΄μ— μ„  ν¬λ£¨κΉŒμ§€ ν¬ν•¨ν•΄μ„œ λŒ€κΈ° μˆœμ„œλŒ€λ‘œ νƒœμš°κ³  λ°”λ‘œ μΆœλ°œν•œλ‹€. 예λ₯Ό λ“€μ–΄ 09:00에 λ„μ°©ν•œ 셔틀은 μžλ¦¬κ°€ μžˆλ‹€λ©΄ 09:00에 쀄을 μ„  크루도 νƒˆ 수 μžˆλ‹€.
  • λͺ¨λ“  ν¬λ£¨λŠ” μž μ„ μžμ•Ό ν•˜λ―€λ‘œ 23:59μ—λŠ” 집에 λŒμ•„κ°„λ‹€.
  • μ½˜μ€ 게으λ₯΄κΈ° λ•Œλ¬Έμ— 같은 μ‹œκ°μ— λ„μ°©ν•œ 크루 쀑 λŒ€κΈ°μ—΄μ—μ„œ 제일 뒀에 μ„ λ‹€.

 

μž…λ ₯κ°’

 

μ…”ν‹€ μš΄ν–‰ 횟수 n,

μ…”ν‹€ μš΄ν–‰ 간격 t,

ν•œ 셔틀에 νƒˆ 수 μžˆλŠ” μ΅œλŒ€ 크루 수 m,

크루가 λŒ€κΈ°μ—΄μ— λ„μ°©ν•˜λŠ” μ‹œκ°μ„ λͺ¨μ€ λ°°μ—΄ timetable.

 

  • 0 < n <= 10
  • 0 < t  <= 60
  • 0 <m <= 45
  • 0 < timetable.length <= 2000

 

 

좜λ ₯κ°’

 

  • 도착 μ‹œκ°μ€ HH:MM ν˜•μ‹μ˜ λ¬Έμžμ—΄μ΄λ©°, 00:00μ—μ„œ 23:59 μ‚¬μ΄μ˜ 값이 될 수 μžˆλ‹€.

 

 

 

 

λ¬Έμ œν’€μ΄

 

1. timetable에 λŒ€ν•œ μ „μ²˜λ¦¬λ₯Ό ν•˜μ—¬ λ³€μˆ˜ crews에 μ €μž₯ν•œλ‹€.

  • '09:00'ν˜•μ‹μ˜ μ›μ†Œλ“€μ„ 뢄을 λ‚˜νƒ€λ‚΄λŠ” 숫자둜 μ»¨λ²„νŒ…
  • λ§ˆμ§€λ§‰ λ²„μŠ€κ°€ λ„μ°©ν•œ 이후에 온 크루듀을 μ œμ™Έ
  • 남은 크루듀을 μ—­μˆœμœΌλ‘œ μ •λ ¬

2. λ²„μŠ€κ°€ λ„μ°©ν•˜λŠ” 횟수인 n번 μˆœνšŒν•œλ‹€. 각 μ΄ν„°λ ˆμ΄μ…˜μ„ 회차라고 ν•˜κ² λ‹€.

 

3. 맀 νšŒμ°¨λ§ˆλ‹€ νƒœμšΈ 수 μžˆλŠ” 크루의 수(<= m)만큼 μˆœνšŒν•œλ‹€.

  • νƒœμšΈ 수 μžˆλŠ” 크루듀을 λ°°μ—΄ crewsμ—μ„œ μ‚­μ œν•œλ‹€.
  • 각 크루λ₯Ό λ°°μ—΄μ—μ„œ μ‚­μ œν•˜λŠ” λ™μ‹œμ— 콘의 μŠΉμ°¨μ‹œκ°„λ„ μ—…λ°μ΄νŠΈν•œλ‹€.
  • λ§Œμ°¨μΌλ•ŒλŠ” λ§ˆμ§€λ§‰ ν¬λ£¨λ³΄λ‹€λŠ” 빨리 도착해야 λ²„μŠ€μ— νƒˆ 수 μžˆμœΌλ―€λ‘œ 1μ΄ˆλ¨Όμ € λ„μ°©ν•΄μ•Όν•œλ‹€.
  • 크루가 λ²„μŠ€λ„μ°©μ‹œκ°„λ³΄λ‹€ 늦게 λ„μ°©ν–ˆμœΌλ©΄ 순회λ₯Ό λ©ˆμΆ”κ³  λ‹€μŒ 회차둜 λ„˜μ–΄κ°„λ‹€.
  • crews 배열이 ν…… 빈 경우 λ°”λ‘œ λ¦¬ν„΄ν•œλ‹€. μ΄λŠ” λͺ¨λ“  크루가 λ²„μŠ€μ— νƒ“κ±°λ‚˜ λ§ˆμ§€λ§‰ λ²„μŠ€λ³΄λ‹€ 늦게 도착할 μ˜ˆμ •μΈ κ²ƒμ΄λ―€λ‘œ μ½˜μ€ κ·Έλƒ₯ λ§ˆμ§€λ§‰ μ°¨κ°€ λ„μ°©ν• μ‹œκ°„μ— λ§žμΆ°μ„œ λ²„μŠ€λ₯Ό 타면 λœλ‹€.

 

 

a = timetable.length

μ‹œκ°„λ³΅μž‘λ„: O(a log a)

κ³΅κ°„λ³΅μž‘λ„: O(a)