๐ ํ๋ก๊ทธ๋๋จธ์ค 120876 : ๊ฒน์น๋ ์ ๋ถ์ ๊ธธ์ด - Javascript
2023-03-03
๋ฌธ์ ์ค๋ช
์ ๋ถ 3๊ฐ๊ฐ ํํํ๊ฒ ๋์ฌ ์์ต๋๋ค. ์ธ ์ ๋ถ์ ์์๊ณผ ๋ ์ขํ๊ฐ [[start, end], [start, end], [start, end]] ํํ๋ก ๋ค์ด์๋ 2์ฐจ์ ๋ฐฐ์ด lines
๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ ๊ฐ ์ด์์ ์ ๋ถ์ด ๊ฒน์น๋ ๋ถ๋ถ์ ๊ธธ์ด๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด๋ณด์ธ์.
lines
๊ฐ [[0, 2], [-3, -1], [-2, 1]]์ผ ๋ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ๋ถ์ด ๋ ๊ฐ ์ด์ ๊ฒน์น ๊ณณ์ [-2, -1], [0, 1]๋ก ๊ธธ์ด 2๋งํผ ๊ฒน์ณ์์ต๋๋ค.
์ ํ์ฌํญ
lines
์ ๊ธธ์ด = 3lines
์ ์์์ ๊ธธ์ด = 2- ๋ชจ๋ ์ ๋ถ์ ๊ธธ์ด๊ฐ 1 ์ด์์ ๋๋ค.
lines
์ ์์๋ [a, b] ํํ์ด๋ฉฐ, a, b๋ ๊ฐ๊ฐ ์ ๋ถ์ ์ ๋์ ์ ๋๋ค.- -100 โค a b โค 100
์ ์ถ๋ ฅ ์
lines | result |
---|---|
[[0, 1], [2, 5], [3, 9]] | 2 |
[[-1, 1], [1, 3], [3, 9]] | 0 |
[[0, 5], [3, 9], [1, 10]] | 8 |
์์ #1
๋ ๋ฒ์งธ, ์ธ ๋ฒ์งธ ์ ๋ถ [2, 5], [3, 9]๊ฐ [3, 5] ๊ตฌ๊ฐ์ ๊ฒน์ณ์์ผ๋ฏ๋ก 2๋ฅผ return ํฉ๋๋ค.์์ #2
๊ฒน์น ์ ๋ถ์ด ์์ผ๋ฏ๋ก 0์ return ํฉ๋๋ค.์์ #2
- ์ฒซ ๋ฒ์งธ์ ๋ ๋ฒ์งธ ์ ๋ถ์ด [3, 5] ๊ตฌ๊ฐ์์ ๊ฒน์นฉ๋๋ค.
- ์ฒซ ๋ฒ์งธ์ ์ธ ๋ฒ์งธ ์ ๋ถ [1, 5] ๊ตฌ๊ฐ์์ ๊ฒน์นฉ๋๋ค.
- ๋ ๋ฒ์งธ์ ์ธ ๋ฒ์งธ ์ ๋ถ [3, 9] ๊ตฌ๊ฐ์์ ๊ฒน์นฉ๋๋ค.
- ๋ฐ๋ผ์ [1, 9] ๊ตฌ๊ฐ์ ๋ ๊ฐ ์ด์์ ์ ๋ถ์ด ๊ฒน์ณ์์ผ๋ฏ๋ก, 8์ return ํฉ๋๋ค.
ํ์ด ๊ณผ์
๋ฐฐ์ด์ ํ๋ ์์ฑํด ์ ๋ถ์ด ๋์ด๋ ์์น์ ๊ฐ์ 1์ฉ ์ฆ๊ฐ์ํค๊ณ , 1์ ์ด๊ณผํ๋ ์์์ ์๋ฅผ ๋ฐํํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก ์๋ํ์ต๋๋ค.
function solution(lines) {
//์ ๋ถ์ด ์กด์ฌํ๋ ์์น๋ฅผ ๋ฐฐ์ด์ ๋ด์
const line = [];
for (const [start, end] of lines) {
for (let i = start; i < end; ++i) {
line[i] = (line[i] ?? 0) + 1;
}
}
//๋ฐฐ์ด์ ์์ ์ค 1์ ์ด๊ณผํ๋ ์์์ ์๋ฅผ ๋ฐํ
return line.filter((count) => count > 1).length;
}
ํ์ง๋ง ์ ์ฝ๋๋ start์ end๊ฐ ์์์ธ ๊ฒฝ์ฐ ์ ๋๋ก ์๋ํ์ง ์์ ์คํจํ์ต๋๋ค. ์์๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฐฐ์ด์ด ์๋ ๋งต์ ๋ด๋๋ก ์์ ํ์ต๋๋ค.
function solution(lines) {
//์ ๋ถ์ด ์กด์ฌํ๋ ์์น๋ฅผ ๋งต์ ๋ด์
const line = new Map();
for (let [start, end] of lines) {
for (let i = start; i < end; ++i) {
line.set(i, (line.get(i) ?? 0) + 1);
}
}
//๋งต์ ์์ ์ค 1์ ์ด๊ณผํ๋ ์์์ ์๋ฅผ ๋ฐํ
return [...line.values()].filter((count) => count > 1).length;
}
๋๋ค๋ฅธ ๋ฐฉ๋ฒ
๋ฐฐ์ด ๋์ ๋งต์ ์ฌ์ฉ ๋ฐฉ๋ฒ์ผ๋ก ์ด๋ฏธ ํด๊ฒฐํ์ง๋ง ๋ฐฐ์ด์ ์ฌ์ฉํ์ง ๋ชปํ๋ ์ด์ ๋ ์์ ์ธ๋ฑ์ค๋ฅผ ์ ๋๋ก ์ฒ๋ฆฌํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ธ๋ฐ, ์ด ๋ฌธ์ ์ ๊ฒฝ์ฐ line
์ ์์์ ๊ฐ์ด -100 ์ด์์ผ๋ก ์ ํ ๋์ด์๊ธฐ ๋๋ฌธ์ ์๋์ ๊ฐ์ด ์ธ๋ฑ์ค์ 100์ ๋ํ๋ ๋ฐฉ์์ผ๋ก๋ ํด๊ฒฐํ ์ ์์ต๋๋ค.
function solution(lines) {
//์ ๋ถ์ด ์กด์ฌํ๋ ์์น๋ฅผ ๋ฐฐ์ด์ ๋ด์
const line = [];
for (const [start, end] of lines) {
for (let i = start; i < end; ++i) {
//์์๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ธ๋ฑ์ค์ 100์ ๋ํจ (-100 ์ด์์ด๊ธฐ ๋๋ฌธ)
line[i + 100] = (line[i + 100] ?? 0) + 1;
}
}
//๋ฐฐ์ด์ ์์ ์ค 1์ ์ด๊ณผํ๋ ์์์ ์๋ฅผ ๋ฐํ
return line.filter((count) => count > 1).length;
}