μžλ°”μŠ€ν¬λ¦½νŠΈ μ•Œκ³ λ¦¬μ¦˜

[μΈν”„λŸ° μ„Ήμ…˜7] νšŒμ˜μ‹€ λ°°μ • (Javascript)

은진 2021. 6. 27. 21:21

μΈν”„λŸ°

πŸ‘©πŸ»β€πŸ’»λ¬Έμ œλ§ν¬

[μΈν”„λŸ° μ„Ήμ…˜7] νšŒμ˜μ‹€ λ°°μ • (Javascript)
유료 κ°•μ˜μΈ κ΄€κ³„λ‘œ 문제 μ„€λͺ…은 μƒλž΅ν•©λ‹ˆλ‹€.


✍️Idea Sketch

2021-06-27

1. 회의 κ²ΉμΉ˜μ§€ μ•Šκ²Œ, μ΅œλŒ€ 수의 회의

2. 그리디?

  • ν˜„μž¬ λ‹¨κ³„μ—μ„œ κ°€μž₯ μ΅œμ„ μ˜ 선택을 ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜

3. νšŒμ˜μ‹€ μ‚¬μš©μ‹œκ°„μ΄ 짧은 순으둜 μ •λ ¬

4. for 반볡문

  • 첫번째 회의 μ’…λ£Œμ‹œμ  = end
  • μ΄ˆκΈ°κ°’ cnt = 1
  • 회의 μ‹œμž‘μ‹œμ μ΄ end보닀 ν¬κ±°λ‚˜ 같은 경우 cnt++, endλŠ” ν•΄λ‹Ή 회의의 μ’…λ£Œμ‹œμ 
let cnt = 1;
let end = arr[0][1];

for (let i=1; i<arr.length; i++) {
    if (arr[i][0] >= end) {
        cnt++;
        end = arr[i][1];
    }
}

문제점
μ‹œμž‘ν•˜μžλ§ˆμž μ’…λ£Œν•˜λŠ” νšŒμ˜κ°€ μžˆλŠ” 경우
κΈ°λŒ€κ²°κ³Όμ™€ μ‹€ν–‰κ²°κ³Όκ°€ 닀름


5. 해결방법

  • 희의 μ’…λ£Œμ‹œκ°„μ΄ κ°€μž₯ λΉ λ₯Έ 순으둜 μ •λ ¬
  • 회의 μ’…λ£Œμ‹œκ°„μ΄ 같은 경우, 회의 μ‹œμž‘μ‹œκ°„ 순으둜 μ •λ ¬

회의 μ‹œμž‘μ‹œκ°„μ„ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜λŠ” 이유
[3, 3], [1, 3] λ‚΄λ¦Όμ°¨μˆœμœΌλ‘œ μ •λ ¬ν•˜λ©΄ λ‘λ²ˆμ§Έ 회의λ₯Ό λ°°μ •ν•  수 μ—†λ‹€.

sort((a, b) => a[1] !== b[1] ? a[1]-b[1] : a[0]-b[0]);


βœοΈμ†ŒμŠ€μ½”λ“œ

2021-06-27

function solution(arr) {
    arr.sort((a, b) => a[1] !== b[1] ? a[1] - b[1] : a[0] - b[0]);
    let cnt = 1;

    let end = arr[0][1];
    for (let i = 1; i < arr.length; i++) {
        if (arr[i][0] >= end) {
            cnt++;
            end = arr[i][1];
        }
    }

    return cnt;
}