관리 메뉴

Daehyunii's Dev-blog

νšŒμ˜μ‹€ λ°°μ •(νƒμš• μ•Œκ³ λ¦¬μ¦˜) λ³Έλ¬Έ

πŸ“š Language & CS knowledge/Algorithm (κΈ°μ΄ˆλ¬Έμ œν’€μ΄)

νšŒμ˜μ‹€ λ°°μ •(νƒμš• μ•Œκ³ λ¦¬μ¦˜)

Daehyunii 2022. 9. 6. 19:03

문제(좜처 : μΈν”„λŸ° μžλ°”μŠ€ν¬λ¦½νŠΈ μ•Œκ³ λ¦¬μ¦˜ λ¬Έμ œν’€μ΄ κ°•μ˜, μ •λ³΄μ˜¬λ¦Όν”Όμ•„λ“œ)

ν•œ 개의 νšŒμ˜μ‹€μ΄ μžˆλŠ”λ° 이λ₯Ό μ‚¬μš©ν•˜κ³ μž ν•˜λŠ” n개의 νšŒμ˜λ“€μ— λŒ€ν•˜μ—¬ νšŒμ˜μ‹€ μ‚¬μš©ν‘œλ₯Ό λ§Œλ“€ λ €κ³  ν•œλ‹€. 각 νšŒμ˜μ— λŒ€ν•΄ μ‹œμž‘μ‹œκ°„κ³Ό λλ‚˜λŠ” μ‹œκ°„μ΄ μ£Όμ–΄μ Έ 있고, 각 νšŒμ˜κ°€ κ²ΉμΉ˜μ§€ μ•Šκ²Œ ν•˜ λ©΄μ„œ νšŒμ˜μ‹€μ„ μ‚¬μš©ν•  수 μžˆλŠ” μ΅œλŒ€μˆ˜μ˜ 회의λ₯Ό 찾아라. 단, νšŒμ˜λŠ” ν•œλ²ˆ μ‹œμž‘ν•˜λ©΄ 쀑간에 쀑 단될 수 μ—†μœΌλ©° ν•œ νšŒμ˜κ°€ λλ‚˜λŠ” 것과 λ™μ‹œμ— λ‹€μŒ νšŒμ˜κ°€ μ‹œμž‘λ  수 μžˆλ‹€.

β–£ μž…λ ₯μ„€λͺ…
첫째 쀄에 회의의 수 n(1<=n<=100,000)이 주어진닀. λ‘˜μ§Έ 쀄뢀터 n+1 μ€„κΉŒμ§€ 각 회의의 μ • 보가 μ£Όμ–΄μ§€λŠ”λ° 이것은 곡백을 사이에 두고 회의의 μ‹œμž‘μ‹œκ°„κ³Ό λλ‚˜λŠ” μ‹œκ°„μ΄ 주어진닀. 회의의 μ‹œμž‘μ‹œκ°„κ³Ό λλ‚˜λŠ” μ‹œκ°„μ˜ 쑰건은 (μ‹œμž‘μ‹œκ°„ <= λλ‚˜λŠ” μ‹œκ°„)μž…λ‹ˆλ‹€.

 

β–£ 좜λ ₯μ„€λͺ…
첫째 쀄에 μ΅œλŒ€ μ‚¬μš©ν•  수 μžˆλŠ” 회의 수λ₯Ό 좜λ ₯ν•˜μ—¬λΌ.

 

β–£ μž…λ ₯예제 1

5
14
23

35 46 57

 

β–£ 좜λ ₯예제 1

3

μ˜ˆμ œμ„€λͺ…

(2, 3), (3, 5), (5, 7)이 νšŒμ˜μ‹€μ„ μ΄μš©ν•  수 μžˆλ‹€.

 

β–£ μž…λ ₯예제 2

3
33
13

23

 

β–£ 좜λ ₯예제 2

2

 

Tip

 

λ¬Έμ œν’€μ΄

//λ‚΄κ°€ μž‘μ„±ν•œ λ‹΅
function solution(arr){
    let answer = 0;
    let endTime = 0;

    arr = arr.sort((a,b)=>{
        if(a[1]===b[1]) return a[0]-b[0];
        else return a[1] - b[1]
    });

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


let arr = [
    [1,4],
    [2,3],
    [3,5],
    [4,6],
    [5,7]
];

let arr2 = [[3,3],[1,3],[2,3]];
console.log(solution(arr2));