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

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

Daehyunii 2022. 9. 6. 19:03

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

ν˜„μˆ˜λŠ” λ‹€μŒ 달에 κ²°ν˜Όμ„ ν•©λ‹ˆλ‹€.
ν˜„μˆ˜λŠ” κ²°ν˜Όμ‹ ν”Όλ‘œμ—°μ„ μž₯μ†Œλ₯Ό 빌렀 3일간 쉬지 μ•Šκ³  ν•˜λ €κ³  ν•©λ‹ˆλ‹€.
ν”Όλ‘œμ—°μ— μ°Έμ„ν•˜λŠ” μΉœκ΅¬λ“€ Nλͺ…μ˜ μ°Έμ„ν•˜λŠ” μ‹œκ°„μ •λ³΄λ₯Ό ν˜„μˆ˜λŠ” μΉœκ΅¬λ“€μ—κ²Œ 미리 μš”κ΅¬ν–ˆμŠ΅λ‹ˆλ‹€. 각 μΉœκ΅¬λ“€μ€ μžμ‹ μ΄ λͺ‡ μ‹œμ— λ„μ°©ν•΄μ„œ λͺ‡ μ‹œμ— λ– λ‚  것인지 ν˜„μˆ˜μ—κ²Œ μ•Œλ €μ£Όμ—ˆμŠ΅λ‹ˆλ‹€.
ν˜„μˆ˜λŠ” 이 정보λ₯Ό λ°”νƒ•μœΌλ‘œ ν”Όλ‘œμ—° μž₯μ†Œμ— λ™μ‹œμ— μ‘΄μž¬ν•˜λŠ” μ΅œλŒ€ μΈμ›μˆ˜λ₯Ό κ΅¬ν•˜μ—¬ κ·Έ 인원을 μˆ˜μš©ν•  수 μžˆλŠ” μž₯μ†Œλ₯Ό 빌리렀고 ν•©λ‹ˆλ‹€. μ—¬λŸ¬λΆ„μ΄ ν˜„μˆ˜λ₯Ό λ„μ™€μ£Όμ„Έμš”.
λ§Œμ•½ ν•œ μΉœκ΅¬κ°€ μ˜€λŠ” μ‹œκ°„ 13, κ°€λŠ”μ‹œκ°„ 15라면 이 μΉœκ΅¬λŠ” 13μ‹œ 정각에 ν”Όλ‘œμ—° μž₯에 μ‘΄μž¬ν•˜λŠ” 것이고 15μ‹œ μ •κ°μ—λŠ” μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€.

β–£ μž…λ ₯μ„€λͺ…
첫째 쀄에 ν”Όλ‘œμ—°μ— 참석할 μΈμ›μˆ˜ N(5<=N<=100,000)이 μ£Όμ–΄μ§‘λ‹ˆλ‹€.
두 번째 쀄뢀터 N쀄에 걸쳐 각 μΈμ›μ˜ μ˜€λŠ” μ‹œκ°„κ³Ό κ°€λŠ” μ‹œκ°„μ΄ μ£Όμ–΄μ§‘λ‹ˆλ‹€.
μ‹œκ°„μ€ 첫날 0μ‹œλ₯Ό 0으둜 ν•΄μ„œ λ§ˆμ§€λ§‰λ‚  λ°€ 12μ‹œλ₯Ό 72둜 ν•˜λŠ” νƒ€μž„λΌμΈμœΌλ‘œ μ˜€λŠ” μ‹œκ°„κ³Ό κ°€ λŠ” μ‹œκ°„μ΄ 음이 μ•„λ‹Œ μ •μˆ˜λ‘œ ν‘œν˜„λ©λ‹ˆλ‹€.

 

β–£ 좜λ ₯μ„€λͺ…
첫째 쀄에 ν”Όλ‘œμ—°μž₯에 λ™μ‹œμ— μ‘΄μž¬ν•˜λŠ” μ΅œλŒ€ 인원을 좜λ ₯ν•˜μ„Έμš”.

 

β–£ μž…λ ₯예제 1

5
14 18
12 15

15 20 20 30 5 14

 

β–£ 좜λ ₯예제 1

2

 

Tip

 

λ¬Έμ œν’€μ΄

//κ°•μ˜ λ“£κ³  λ‚΄κ°€ μž‘μ„±ν•œ μ½”λ“œ
function solution(arr){
    let answer = Number.MIN_SAFE_INTEGER;
    let timeLine = [];
    let count = 0;

    for(let x of arr){
        timeLine.push([x[0],1]);
        timeLine.push([x[1],0]);
    }

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

    for(let x of timeLine){
        if(x[1] === 1){
            count++;
        }else if(x[1] === 0){
            count--;
        }
        if(count > answer) answer = count;
    }
    return answer;
}

let arr = [
    [14,18],
    [12,15],
    [15,20],
    [20,30],
    [5,14],
    [13,16]
];
console.log(solution(arr));