๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/์ธํ”„๋Ÿฐ(inflearn)

[ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(JavaScript) ] section07 - 9 - ๊ฒฐํ˜ผ์‹

by YWTechIT 2021. 9. 13.
728x90

๐Ÿ“ section07 - 9 - ๊ฒฐํ˜ผ์‹

ํ”ผ๋กœ์—ฐ ์žฅ์†Œ์— ๋™์‹œ์— ์กด์žฌํ•˜๋Š” ์ตœ๋Œ€ ์ธ์›์ˆ˜๋ฅผ ๊ตฌํ•˜์—ฌ ๊ทธ ์ธ์›์„ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์†Œ๋ฅผ ๋นŒ๋ฆฌ๋ ค๊ณ  ํ•œ๋‹ค. ๋งŒ์•ฝ, ์ž…๋ ฅ์ด 13 15๋ผ๋ฉด 13์‹œ ์ •๊ฐ์— ํ”ผ๋กœ์—ฐ์žฅ์— ์กด์žฌํ•˜๊ณ  15์‹œ์—๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ”ผ๋กœ์—ฐ์žฅ์— ๋™์‹œ์— ์กด์žฌํ•˜๋Š” ์ตœ๋Œ€ ์ธ์›์„ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ๋‹ค.

 

์ด ๋ฌธ์ œ๋„ greedy๋กœ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ธ๋ฐ, ํšŒ์˜์‹ค ๋ฐฐ์ •์ฒ˜๋Ÿผ ์ž…๋ ฅ์„ ์ •๋ ฌ์„ ํ•˜๋˜, ์ •๋ ฌ ๊ธฐ์ค€์„ ๊ฒฐํ˜ผ์‹์— ๋“ฑ์žฅํ•˜๋Š” ์‹œ๊ฐ„(s), ๊ฒฐํ˜ผ์‹์žฅ์—์„œ ๋‚˜๊ฐ€๋Š” ์‹œ๊ฐ„(e)์œผ๋กœ ๋‚˜๋ˆ ์„œ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ์„ ํ•ด์•ผ ํ•œ๋‹ค. ์ž…๋ ฅ์„ ํƒ€์ž„๋ผ์ธ ํ˜•์‹์œผ๋กœ ๊ทธ๋ ค๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

 

์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€ ๋‚˜๊ฐ„์‹œ๊ฐ„(e)์€ ํฌํ•จํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•  ๋•Œ ๋“ค์–ด์˜ค๋Š”์‹œ๊ฐ„(s)๊ณผ ๋‚˜๊ฐ€๋Š”์‹œ๊ฐ„(e)์ด ๋™์ผํ•˜๋ฉด e๊ฐ€ ๋จผ์ € ์˜ค๊ฒŒ ์„ค์ •ํ•œ๋‹ค.

 

  1. ํ”ผ๋กœ์—ฐ์— ๋“ฑ์žฅํ•˜๋Š” ์‹œ๊ฐ„๊ณผ ๋‚˜๊ฐ€๋Š” ์‹œ๊ฐ„์„ ๋‚˜๋ˆˆ๋‹ค.
  2. ์‹œ๊ฐ„์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ๊ฐ™๋‹ค๋ฉด ๋‚˜๊ฐ„ ์‹œ๊ฐ„์„ ๋จผ์ € ์•ž์— ์„ธ์šด๋‹ค. (๋‚˜๊ฐ„ ์‹œ๊ฐ„์€ ์ •๊ฐ์— ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ)
  3. ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉด์„œ s๋ฅผ ๋งŒ๋‚˜๋ฉด cnt++์„ ํ•ด์ฃผ๊ณ , e๋ฅผ ๋งŒ๋‚˜๋ฉด cnt--๋ฅผ ํ•ด์ค€๋‹ค.
  4. cnt์˜ ์ตœ๋Œ“๊ฐ’์„ ๊ฐฑ์‹ ํ•œ๋‹ค.

 

์—ฌ๋‹ด์ด์ง€๋งŒ, ๋ฌธ์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ์‹ถ์œผ๋ฉด charCodeAt() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ๋น„๊ต ๋ฌธ์ž๋ฅผ ASCII ์ฝ”๋“œ๋กœ ๋ฐ”๊พธ์–ด ์ค€ ๋‹ค์Œ, ๊ฐ’์„ ๋น„๊ตํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ์—ฌ๊ธฐ์„  s์˜ ASCII์ฝ”๋“œ๋Š” 115์ด๊ณ , e๋Š” 101์ด๋ฏ€๋กœ e๊ฐ€ ๋” ์ž‘๋‹ค.

 

 

728x90

 

let n = 5;
let arr = [[14, 18], [12, 15], [15, 20], [20, 30], [5, 14]];

console.log(solution(n, arr));

function solution(n, arr) {
    let tL = [];

    for (let x of arr) {
        tL.push([x[0], "s"]);
        tL.push([x[1], "e"]);
    }

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

    let cnt = 0;
    let answer = 0;

    for (let x of tL) {
        if (x[1] === "s") cnt++;
        else cnt--;
        answer = Math.max(answer, cnt);
    }
    return answer;
}
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€