๐โ๏ธ ๊ฒน์น๋ ์ ๋ถ
์ ๋ถ 3๊ฐ๊ฐ ํํํ๊ฒ ๋์ฌ ์์ต๋๋ค. ์ธ ์ ๋ถ์ ์์๊ณผ ๋ ์ขํ๊ฐ [[start, end], [start, end], [start, end]] ํํ๋ก ๋ค์ด์๋ 2์ฐจ์ ๋ฐฐ์ด lines๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ ๊ฐ ์ด์์ ์ ๋ถ์ด ๊ฒน์น๋ ๋ถ๋ถ์ ๊ธธ์ด๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด๋ณด์ธ์.
lines๊ฐ [[0, 2], [-3, -1], [-2, 1]]์ผ ๋ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.

์ ๋ถ์ด ๋ ๊ฐ ์ด์ ๊ฒน์น ๊ณณ์ [-2, -1], [0, 1]๋ก ๊ธธ์ด 2๋งํผ ๊ฒน์ณ์์ต๋๋ค.
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- ๋ ๋ฒ์งธ, ์ธ ๋ฒ์งธ ์ ๋ถ [2, 5], [3, 9]๊ฐ [3, 5] ๊ตฌ๊ฐ์ ๊ฒน์ณ์์ผ๋ฏ๋ก 2๋ฅผ return ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #2
- ๊ฒน์น ์ ๋ถ์ด ์์ผ๋ฏ๋ก 0์ return ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #3
- ์ฒซ ๋ฒ์งธ์ ๋ ๋ฒ์งธ ์ ๋ถ์ด [3, 5] ๊ตฌ๊ฐ์์ ๊ฒน์นฉ๋๋ค.
- ์ฒซ ๋ฒ์งธ์ ์ธ ๋ฒ์งธ ์ ๋ถ [1, 5] ๊ตฌ๊ฐ์์ ๊ฒน์นฉ๋๋ค.
- ๋ ๋ฒ์งธ์ ์ธ ๋ฒ์งธ ์ ๋ถ [3, 9] ๊ตฌ๊ฐ์์ ๊ฒน์นฉ๋๋ค.
- ๋ฐ๋ผ์ [1, 9] ๊ตฌ๊ฐ์ ๋ ๊ฐ ์ด์์ ์ ๋ถ์ด ๊ฒน์ณ์์ผ๋ฏ๋ก, 8์ return ํฉ๋๋ค.
๐ฉ๐ป๐ป ํ์ด
- ์์ ์ฒ๋ฆฌ: ๋ฌธ์ ์์ ์ขํ๋ -100๋ถํฐ 100, ๋ฐฐ์ด ์ธ๋ฑ์ค๋ ์์๊ฐ ๋ ์ ์์ผ๋ฏ๋ก, 0~200์ผ๋ก ์ฑ์ฐ๊ธฐ
- ์ ๋ถ ๊ทธ๋ฆฌ๊ธฐ: ์ ๋ถ์ด ์ง๋๊ฐ๋ ๊ตฌ๊ฐ๋ง๋ค ๋ฐฐ์ด์ ๊ฐ์ 1์ฉ ์ฆ๊ฐ
- ์ค๋ณต ๊ตฌ๊ฐ ์ฐพ๊ธฐ: ์ต์ข ์ ์ผ๋ก ๋ฐฐ์ด์ ๊ฐ์ด 2 ์ด์์ธ ์นธ์ ๊ฐ์๋ฅผ ์ธ์ด ๋ฆฌํด
function solution(lines) {
let line = new Array(200).fill(0); // ์์๋ฅผ ์ํด 0 200๊ฐ ์ฑ์ฐ๊ธฐ
lines.forEach(([start, end]) => {
// start๋ถํฐ end ์ง์ ๊น์ง ๋ฐ๋ณต
// start๊ฐ -1์ผ ๋: line[-1 + 100] -> line[99]++
// start๊ฐ 0์ผ ๋: line[0 + 100] -> line[100]++
// start๊ฐ 1์ผ ๋: line[1 + 100] -> line[101]++
for(; start < end; start++) line[start+100]++;
});
// ๊ฐ์ด 2 ์ด์์ธ(๋ ๊ฐ ์ด์์ ์ ๋ถ์ด ์ง๋๊ฐ) ๊ตฌ๊ฐ์ ๊ฐ์ ํฉ์ฐ
return line.reduce((acc, curr) => curr > 1 ? acc + 1 : acc, 0);
}