1๏ธโฃ ๋ฌธ์

2๏ธโฃ ๋ฌธ์ ํด๊ฒฐ ์ ๋ต
ํ๋์ ํ ๋ฌธ์ , ํ์์ค ๋ฐฐ์ ๋ฌธ์
- ์ข ๋ฃ ์๊ฐ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
- ๊ฐ์ฅ ๋นจ๋ฆฌ ๋๋๋ ์๋(idx=0)๋ถํฐ ์ ํ
- ์ ํํ ์๋์ ๋๋๋ ์๊ฐ๋ณด๋ค ๊ฐ๊ฑฐ๋ ๋ฆ๊ฒ ์์ํ๋ ์๋์ด ๋ค์ ์๋(count+1) โ ๋ฐ๋ณต
3๏ธโฃ ์ฝ๋ ๋ฐ ์ค๋ช
๋ด ์ฝ๋
- ์ธ๋ฑ์ค
function solution(N, reserved) { var answer = 1; reserved.sort((a,b)=>a[0]-b[0]||a[1]-b[1]) var [start,end] = reserved[0] for (let i=1;i<N;i++) { var [nstart,nend]=reserved[i] if (end<=nstart) { start = nstart end = nend answer++ } else if (end-start>nend-nstart) { start = nstart end = nend } } return answer; }
- dfs โ ์๊ฐ์ด๊ณผ
function solution(N, reserved) { var answer = 0; reserved.sort((a,b)=>a[0]-b[0]||a[1]-b[1]) function dfs(idx,count) { for (let i=idx+1;i<N;i++) { if (idx===-1 || reserved[idx][1]<=reserved[i][0]) { dfs(i,count+1) } } answer=Math.max(answer,count) } dfs(-1,0) return answer; }
๋ชจ๋ฒ ์ฝ๋
function solution(N, reserved) { var answer = 1; reserved.sort((a,b)=>a[1]-b[1]) var end = reserved[0][1] for (let i=1;i<N;i++) { var [nstart,nend]=reserved[i] if (end<=nstart) { end = nend answer++ } } return answer; }
4๏ธโฃ ์๊ฐ๋ณต์ก๋
O(NlogN) โ because ์ ๋ ฌ