42862. ์ฒด์ก๋ณต
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์ฒด์ก๋ณต
๋ฌธ์ ์ ํ | ๋์ด๋ | ๊ฑธ๋ฆฐ ์๊ฐ | ํด๊ฒฐ ์ ๋ฌด(โ /โ) |
---|---|---|---|
ํ์๋ฒ(๊ทธ๋ฆฌ๋) | lv.1 | 1์๊ฐ | โ |
#
์ค๊ณ ๋ฐฉ๋ฒSet์ ์ฌ์ฉํด์
reserve
์lost
์ ์ฐจ์งํฉ์ผ๋กreserveSet
,lostSet
์๋ง๋ ๋ค.reserveSet
์ ์ํํ๋ฉด์ ์์ ํ์์ด ์ฒด์ก๋ณต์ด ์๋ค๋ฉด ์ฒด์ก๋ณต์ ๋น๋ ค์ฃผ๊ณ๋ค์ ํ์์ด ์ฒด์ก๋ณต์ด ์๋ค๋ฉด ์ฒด์ก๋ณต์ ๋น๋ ค์ค๋ค.
์ด ํ์์์
lostSet.size
๋งํผ์ ์ ๊ฑฐํ๋ค.
#
์ฝ๋Set.prototype.difference = function (setB) { let difference = new Set(this); for (let elem of setB) { difference.delete(elem); } return difference;};
function solution(n, lost, reserve) { const reserveSet = new Set(reserve).difference(new Set(lost)); const lostSet = new Set(lost).difference(new Set(reserve));
reserveSet.forEach((i) => { if (lostSet.has(i - 1)) { lostSet.delete(i - 1); } else if (lostSet.has(i + 1)) { lostSet.delete(i + 1); } });
return n - lostSet.size;}
#
์๊ฐ ๋ณต์ก๋โ Set์
has
,delete
,add
์ฐ์ฐ์ด O(1) ์ด๋ผ๋ ์ ์ ์๋กญ๊ฒ ์๊ฒ ๋์๋ค. (๋ฐฐ์ด์ O(n))
N =
reserveSet
, M =lostSet
์ฐจ์งํฉ ์์ฑ : O(N), O(M)
reserveSet
์ํ ๋ฐlostSet
๊ฒ์ : O(NM)์ด O(NM)
#
์ด๋ ค์ ๋ ์ - ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ์ดํด๊ฐ ๋ถ์กฑํ๋ค.