๐ฉ๐ปโ๐ป๋ฌธ์ ๋งํฌ
[์ธํ๋ฐ ์น์
7] ๊ฒฐํผ์ (Javascript)
์ ๋ฃ ๊ฐ์์ธ ๊ด๊ณ๋ก ๋ฌธ์ ์ค๋ช
์ ์๋ตํฉ๋๋ค.
โ๏ธIdea Sketch
2021-06-27
1. ๋์์ ์กด์ฌํ๋ ์ต๋ ์ธ์์ ๊ตฌํ๊ธฐ
2. arr๋ฅผ ์ด๋ป๊ฒ ์ ๋ ฌํ ๊ฒ์ธ๊ฐ?
- ์์์๊ฐ ์ข ๋ฃ์๊ฐ ์๊ด์์ด, ๋ฐฐ์ด์ ๋ฑ์ฅํ ๋ชจ๋ ์๊ฐ์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
- ๋จ, ์์์๊ฐ์ผ ๊ฒฝ์ฐ cnt+1, ์ข ๋ฃ์๊ฐ์ผ ๊ฒฝ์ฐ cnt-1
let table = [];
for (let x of arr) {
table.push([x[0], 1]); // ์์์๊ฐ์ผ ๊ฒฝ์ฐ cnt+1
table.push([x[1], -1]); // ์ข
๋ฃ์๊ฐ์ผ ๊ฒฝ์ฐ cnt-1
}
table.sort((a, b) => a[0] - b[0]);
3. ์ ๋ ฌํ ๋ฐฐ์ด table์ ์ํ
let cnt = 0;
for (let x of table){
cnt += x[1];
max = Math.max(max, cnt);
};
4. ๋ค์ด์ค๋ ์ฌ๋๊ณผ +1 ๋๊ฐ๋ ์ฌ๋์ด -1 ๋์์ ์กด์ฌํ ๊ฒฝ์ฐ
- cnt+0์ผ๋ก ์ฒ๋ฆฌํด์ผ ํจ
- ํ ๋ก์ง์์๋ cnt+1์ ๋จผ์ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ max์ ์ํฅ์ ๋ฏธ์นจ
5. ํด๊ฒฐ๋ฐฉ๋ฒ
- ๋ฐฉ๋ฒ 1. hash ์ฌ์ฉํ๊ธฐ --> ๋ฌธ์ ์ : hash์ Map()์ ์ฝ์ ์์ผ๋ก ์ํํ๋ฉฐ, ์ ๋ ฌX
- ๋ฐฉ๋ฒ 2. ์ธ์ ํ ๋ ์์์ ์๊ฐ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ง Math.max() ์ฐ์ฐ
let cnt = 0;
for (let i = 0; i < table.length; i++) {
cnt += table[i][1];
if (table[i][0] !== table[i + 1][0]) max = Math.max(max, cnt);
};
6. for ๋ฐ๋ณต๋ฌธ ์ข ๋ฃ์กฐ๊ฑด ์์
- table ๋ง์ง๋ง ์์๋ฅผ ์ํํ ๋, table[i + 1][0] ์ค๋ฅ ๋ฐ์
- ๋ค์ด์จ ์ธ์์ ๋ฐ๋์ ๋๊ฐ์ผ ํ๋ฏ๋ก, table์ ๋ง์ง๋ง ์์๋ ๋ฌด์กฐ๊ฑด cnt-1
- ์ฐ๋ฆฌ๋ max ์ธ์์ ๊ตฌํ๊ณ ์์ผ๋ฏ๋ก, table ๋ง์ง๋ง ์์๋ ์ํํ์ง ์์๋ ์๊ด์๋ค.
let cnt = 0;
for (let i = 0; i < table.length-1; i++) {
cnt += table[i][1];
if (table[i][0] !== table[i + 1][0]) max = Math.max(max, cnt);
};
4๋ฒ์ ๋๋ค๋ฅธ ํด๊ฒฐ๋ฐฉ๋ฒ
- table.sort() ํ ๋ ์๊ฐ์ด ๊ฐ์ ๊ฒฝ์ฐ, -1 +1์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
- table ์ํ ๋ก์ง ๋จ์ํด์ง
table.sort((a, b) => {
if (a[0] === b[0]) return a[1]-b[1];
return a[0] - b[0];
});
for (let x of table){
cnt += x[1];
max = Math.max(max, cnt);
};
โ๏ธ์์ค์ฝ๋
2021-06-27
function solution(arr) {
let max = 0, cnt = 0;
let table = [];
for (let x of arr) {
table.push([x[0], 1]); // ์ถ์
์๊ฐ์ผ ๊ฒฝ์ฐ cnt+1
table.push([x[1], -1]); // ํด์ฅ์๊ฐ์ผ ๊ฒฝ์ฐ cnt-1
}
table.sort((a, b) => a[0] - b[0]);
for (let i = 0; i < table.length-1; i++) {
cnt += table[i][1];
if (table[i][0] !== table[i + 1][0]) max = Math.max(max, cnt);
};
return max;
}
2021-06-27
function solution(arr) {
let max = 0, cnt = 0;
let table = [];
for (let x of arr) {
table.push([x[0], 1]); // ์ถ์
์๊ฐ์ผ ๊ฒฝ์ฐ cnt+1
table.push([x[1], -1]); // ํด์ฅ์๊ฐ์ผ ๊ฒฝ์ฐ cnt-1
}
table.sort((a, b) => a[0]===b[0] ? a[1]-b[1] : a[0]-b[0]);
for (let x of table) {
cnt += x[1];
max = Math.max(max, cnt);
};
return max;
}