λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
🧠 μ•Œκ³ λ¦¬μ¦˜

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]μš”κ²©μ‹œμŠ€ν…œ JS 풀이

by megan07 2023. 12. 27.

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/181188

풀이 방법

νƒ€κ²Ÿμ˜ μ‹œμž‘μ μ΄ μš”κ²© λ²”μœ„μ˜ 끝점보닀 μž‘μœΌλ©΄ μš”κ²© κ°€λŠ₯ν•˜λ‹€

  1. νƒ€κ²Ÿλ“€μ˜ 끝점을 κΈ°μ€€μœΌλ‘œ μ˜€λ¦„μ°¨μˆœ μ •λ ¬ν•œλ‹€
  2. μš”κ²© λ²”μœ„λŠ” 끝점만 μ €μž₯ν•œλ‹€
  3. μš”κ²© λ²”μœ„μ˜ 끝점보닀 νƒ€κ²Ÿμ˜ μ‹œμž‘μ μ΄ μž‘μ€ 경우, μš”κ²© κ°€λŠ₯
  4. μš”κ²© λ²”μœ„μ˜ 끝점보닀 νƒ€κ²Ÿμ˜ μ‹œμž‘μ μ΄ 큰 경우, μš”κ²© 미사일이 ν•˜λ‚˜ 더 ν•„μš”ν•˜κ³  μš”κ²© λ²”μœ„ 끝점을 νƒ€κ²Ÿμ˜ 끝점으둜 λ³€κ²½

 

1. λ‚΄ 풀이

function solution(targets) {
  //νƒ€κ²Ÿμ˜ 끝점을 κΈ°μ€€μœΌλ‘œ μ˜€λ¦„μ°¨μˆœ μ •λ ¬
  targets.sort((a, b) => a[1] - b[1]);

  //μš”κ²© 횟수
  let cnt = 0;
  //μš”κ²© λ²”μœ„ 끝점
  let missile = -Infinity;

  targets.forEach(([start, end]) => {
    //νƒ€κ²Ÿμ˜ μ‹œμž‘μ μ΄ μš”κ²©λ²”μœ„λ³΄λ‹€ ν¬κ±°λ‚˜ κ°™μœΌλ©΄(κ°œκ΅¬κ°„)
    //미사일 μΆ”κ°€ν•˜κ³  λ²”μœ„ μ‘°μ •
    if (start >= missile) {
      cnt++;
      missile = end;
    }
  });

  return cnt;
}