ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
ํ์๋ ๋ค์ ๋ฌ์ ๊ฒฐํผ์ ํฉ๋๋ค. ํ์๋ ๊ฒฐํผ์ ํผ๋ก์ฐ์ ์ฅ์๋ฅผ ๋น๋ ค 3์ผ๊ฐ ์ฌ์ง ์๊ณ ํ๋ ค๊ณ ํฉ๋๋ค.
ํผ๋ก์ฐ์ ์ฐธ์ํ๋ ์น๊ตฌ๋ค N๋ช
์ ์ฐธ์ํ๋ ์๊ฐ์ ๋ณด๋ฅผ ํ์๋ ์น๊ตฌ๋ค์๊ฒ ๋ฏธ๋ฆฌ ์๊ตฌํ์ต๋๋ค. ๊ฐ ์น๊ตฌ๋ค์ ์์ ์ด ๋ช ์์ ๋์ฐฉํด์ ๋ช ์์ ๋ ๋ ๊ฒ์ธ์ง ํ์์๊ฒ ์๋ ค์ฃผ์์ต๋๋ค. ํ์๋ ์ด ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ํผ๋ก์ฐ ์ฅ์์ ๋์์ ์กด์ฌํ๋ ์ต๋ ์ธ์์๋ฅผ ๊ตฌํ์ฌ ๊ทธ ์ธ์์ ์์ฉํ ์ ์๋ ์ฅ์๋ฅผ ๋น๋ฆฌ๋ ค๊ณ ํฉ๋๋ค. ์ฌ๋ฌ๋ถ์ด ํ์๋ฅผ ๋์์ฃผ์ธ์.
(๋ง์ฝ ํ ์น๊ตฌ๊ฐ ์ค๋ ์๊ฐ 13, ๊ฐ๋์๊ฐ 15๋ผ๋ฉด ์ด ์น๊ตฌ๋ 13์ ์ ๊ฐ์ ํผ๋ก์ฐ ์ฅ์ ์กด์ฌํ๋ ๊ฒ์ด๊ณ 15์ ์ ๊ฐ์๋ ์กด์ฌํ์ง ์๋๋ค๊ณ ๊ฐ์ ํฉ๋๋ค)
๋ฌธ์ ํ์ด
- ์ด๋ฒคํธ๊ฐ start(์ฐธ์์๊ฐ)๊ณผ end(๋ ๋์๊ฐ) ๋ ๊ฐ๋ก ๋๋๋ค.
- ๊ฐ ์๊ฐ๊ณผ ํด๋น ์๊ฐ์ ์ผ์ด๋ ์ด๋ฒคํธ๋ฅผ ํ ์์ผ๋ก ์๋ก์ด ์๋ฃ๊ตฌ์กฐ๋ฅผ ์์ฑํ๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ์๊ฐ ์์๋๋ก ์ ๋ ฌ์ ํ๋, ๋ง์ฝ์ ์๊ฐ์ด ๋๊ฐ๋ค๋ฉด ์ด๋ฒคํธ๋ฅผ ๋น๊ตํ์ฌ ์ ๋ ฌํ๋ค.
- ์ด๋ฒคํธ ๋น๊ต ์, ์ด๋ฒคํธ์ ๋จผ์ ๋์ฐฉํ ์น๊ตฌ๊ฐ ๋ ๋ ์๊ฐ์ด ์์ผ๋ก ์์ผ๋๊ณ ์๋ก ์จ ์น๊ตฌ๊ฐ ์ฐธ์ํ ์๊ฐ์ด ๋ค๋ก ์ ๋ ฌ๋์ด์ผ ํ๋ค.
์ฝ๋
function solution(...times) {
let answer = Number.MIN_SAFE_INTEGER;
let timeLine = [];
for(let x of times) { //์ฐธ์์๊ฐ๊ณผ ๋ ๋์๊ฐ ๋ ์ด๋ฒคํธ์ ๊ฐ ์๊ฐ์ผ๋ก ๋๋๋ค.
timeLine.push([x[0], 's']);
timeLine.push([x[1], 'e']);
}
timeLine.sort((a, b) => {
if(a[0] === b[0]) return a[1].charCodeAt() - b[1].charCodeAt(); //์๊ฐ์ด ๊ฐ๋ค๋ฉด ์ด๋ฒคํธ ์ข
๋ฅ์ ๋ฐ๋ผ ๋๋๋ค(์์คํค์ฝ๋ ์ฌ์ฉ)
else return a[0] - b[0]; //๊ธฐ๋ณธ์ ์ผ๋ก ์๊ฐ ์๋๋ก ์ ๋ ฌ
})
let cnt = 0;
for(let x of timeLine) {
if(x[1] === 's') cnt++;
else if(x[1] === 'e') cnt--;
answer = Math.max(answer, cnt);
}
return answer;
}
console.log(solution([14, 18], [12, 15], [15, 20], [20, 30], [5, 14]));
'์๊ณ ๋ฆฌ์ฆ > ํ๊ทธ ๋ณ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ฒฐ์ ์๊ณ ๋ฆฌ์ฆ]๋ฎค์ง๋น๋์ค (0) | 2021.07.25 |
---|---|
์ด๋ถํ์ (0) | 2021.07.25 |
[๊ทธ๋ฆฌ๋]ํ์์ค ๋ฐฐ์ (0) | 2021.07.23 |
์ขํ ์ ๋ ฌ (0) | 2021.07.22 |
์ฅ๋๊พธ๋ฌ๊ธฐ ํ์ (0) | 2021.07.21 |