Conversation
There was a problem hiding this comment.
์๋
ํ์ธ์ ์ด๋ฒ ํ ์ฃผ๋ ๊ณ ์ ๋ง์ผ์
จ์ต๋๋ค.
์ค ์ฐํด์์๋ ๋ถ๊ตฌํ๊ณ 4๋ฌธ์ ๋ ํ์ด์ฃผ์
จ๋ค์ :)
์ฝ๋ฉํธ๋ฅผ ๋จ๊ฒจ ๋์์ผ๋ ๋ณํฉ ์ ์ ํ์ธํ๊ณ ๋ณํฉ ์งํ ๋ถํ ๋๋ฆฝ๋๋ค
์ถ๊ฐ์ ์ธ ์ฝ๋ฉํธ ๊ตํ์ ์ํ์ ๋ค๋ฉด re-request reviewํด์ฃผ์ธ์!
|
|
||
| // ์ฌ๊ท๋ฅผ ํ์ฉํ dfs๋ฅผ ์ฌ์ฉํ ํ์ด | ||
| // ์๊ฐ๋ณต์ก๋ O(v + e) -> v(๋ ธ๋์ ์) + e(๊ฐ์ ์ ์) ๋งํผ ํ์์ ์ํ | ||
| // ๊ณต๊ฐ๋ณต์ก๋ O(n) -> map์ด ์ด ๋ ธ๋์ ์ ๋งํผ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง |
There was a problem hiding this comment.
- ๊ณต๊ฐ๋ณต์ก๋ ๋ถ์ ๊ฒฐ๊ณผ์๋ ์ํฅ์ ๋ฏธ์น์ง ์์ง๋ง, ์ฌ๊ทํธ์ถ ์คํ์ ๋ํ ์ธ๊ธ๋ ํด์ฃผ๋ฉด ์ข์ ๊ฒ ๊ฐ์์!
- ์๊ฐ๋ณต์ก๋์์ ๋ ธ๋์ ์๋ฅผ v๋ผ๊ณ ํํํ์ จ์ผ๋๊น ๊ณต๊ฐ๋ณต์ก๋๋ O(v)๋ผ๊ณ ์จ์ฃผ๋ฉด ๋ ๋์ ๊ฒ ๊ฐ์์
| nodeMap.set(clone.val, clone); | ||
|
|
||
| for (const nei of nodeParam.neighbors) { | ||
| clone.neighbors = [...clone.neighbors, dfs(nei)]; |
There was a problem hiding this comment.
Array๋ฅผ ๋งค๋ฒ ์๋ก ๋ง๋ค์ด์ฃผ๋ ๋์ ์ ์ ์์๋ฅผ pushํด์ฃผ๋ ๋ฐฉ์์ ์ด๋ค๊ฐ์?
| clone.neighbors = [...clone.neighbors, dfs(nei)]; | |
| clone.neighbors.push(dfs(nei)); |
There was a problem hiding this comment.
๋ต ํ์ด์ ๊ทธ๋ ๊ฒ push๋ก ์์๋ฅผ ๋ฃ์ด ์ฃผ๋๋ฐ ๊ทธ ๋ฐฉ์์ด ์ข ๋ ๊ฐ๊ฒฐํ๊ณ ์ฑ๋ฅ๋ ๋์ ๊ฒ ๊ฐ์ต๋๋ค :)
|
|
||
| // ํ๋ฅผ ํ์ฉํ bfs๋ฅผ ์ฌ์ฉํ ํ์ด | ||
| // ์๊ฐ๋ณต์ก๋ O(v + e) -> v(๋ ธ๋์ ์) + e(๊ฐ์ ์ ์) ๋งํผ ํ์์ ์ํ | ||
| // ๊ณต๊ฐ๋ณต์ก๋ O(n) -> map์ด ์ด ๋ ธ๋์ ์ ๋งํผ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง |
There was a problem hiding this comment.
์๊ฐ๋ณต์ก๋์์ ๋ ธ๋์ ์๋ฅผ v๋ผ๊ณ ํํํ์ จ์ผ๋๊น ๊ณต๊ฐ๋ณต์ก๋๋ O(v)๋ผ๊ณ ์จ์ฃผ๋ฉด ๋ ๋์ ๊ฒ ๊ฐ์์
There was a problem hiding this comment.
๊ทธ๋ฌ๋ค์ ์์ ํด์ ์ปค๋ฐํ๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค! :)
| // ์ด queue์๋ ํด๋ก ์ด ์๋๋ผ ์๋ณธ ๋ ธ๋๊ฐ ๋ค์ด๊ฐ์ผํจ(neighbors์ ๋ํ ์ฐธ์กฐ ๋๋ฌธ) | ||
| const queue = [node]; |
There was a problem hiding this comment.
์๊ณ ๋ฆฌ์ฆ์ ์ ์์ ์ผ๋ก ๋์ํ์ง๋ง ํด๋น Array๋ queue๊ฐ ์๋๋ค์ (stack์ฒ๋ผ ๋์ํด์!)
| return dfs(0, 0); | ||
| }; | ||
|
|
||
| // ์๊ฐ๋ณต์ก๋ O(m * n) -> ์ฌ๊ท๋ฅผ ํตํด m๊ณผ n์ด 1์ฉ ์ฆ๊ฐํ๋ฉด์ ์๋ํธ์ m or n ๋ฒ ์งธ ์ธ๋ฑ์ค ๋ฌธ์์ด์ ๋น๊ตํ๋ฏ๋ก??? (์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋ฆฌ๋ทฐ์ด๋ถ์ด ์ฌ์ ๋์๋ฉด ์ค๋ช ๋ถํ๋๋ฆฝ๋๋ค ใ ใ ) |
There was a problem hiding this comment.
์ด๋๊น์ง ์ดํด๋์ จ๊ณ ์ด๋๋ถํฐ ์ดํด๊ฐ ์ ์๋์๋์ง Discussion์ ์ฌ๋ ค์ฃผ์ธ์~!
| const countOfOthers = currLength - maxCountOfChar; | ||
|
|
||
| // ํ์ฌ ๋ฌธ์์ด์ ๊ธธ์ด์์ ๊ฐ์ฅ ๋ง์ด ๋์ค๋ ๋ฌธ์์ด์ ์๋ฅผ ๋บธ ๊ฐ์ธ countOfOthers๊ฐ | ||
| // k๋ณด๋ค ์์ผ๋ฉด ํ์ฌ ๋ฌธ์์ด์์ start๋ฒ ์งธ ๋ฌธ์์ ์๋ฅผ map์์ ๊ฐ์์ํค๊ณ star์ ๊ฐ์ ์ฆ๊ฐ์ํจ๋ค. |
| /** | ||
| * @param {number} n | ||
| * @return {number} | ||
| */ | ||
| var hammingWeight = function (n) { | ||
| const binary = [1]; | ||
|
|
||
| while (binary[0] < n) { | ||
| const latest = binary[0] * 2; | ||
|
|
||
| binary.unshift(latest); | ||
| } | ||
|
|
||
| let count = 0; | ||
|
|
||
| for (let i = 0; i < binary.length; i++) { | ||
| if (binary[i] <= n) { | ||
| count++; | ||
| n = n - binary[i]; | ||
| } | ||
|
|
||
| if (n === 0) { | ||
| break; | ||
| } | ||
| } | ||
|
|
||
| return count; | ||
| }; | ||
|
|
||
| // ์๊ฐ๋ณต์ก๋ O(logn) -> ์ด์งํ์์ฒ๋ผ 2์ฉ ๊ณฑํด๊ฐ๋ฉฐ n์ ๋์ด๊ฐ๋ ๊ฐ์ฅ ํฐ ์๋ฅผ ์ฐพ์ผ๋ฏ๋ก |
There was a problem hiding this comment.
- bitwise์ฐ์ฐ์์ ๋ํด์ ํ ๋ฒ ์ฐพ์๋ณด์๋ ๊ฑธ ์ถ์ฒ๋๋ฆฝ๋๋ค e.g. Right shift. bitwise ์ฐ์ฐ์๋ฅผ ์ด์ฉํ ํ์ด๊ฐ ๋ ์ค๋ฅด์ง ์๋๋ค๋ฉด ๋ค๋ฅธ ๋ถ๋ค ํ์ด๋ฅผ ์ฐธ๊ณ ํด์ฃผ์ธ์~!
- ์ ๊ฐ ์๊ธฐ๋ก
unshift์ ์๊ฐ ๋ณต์ก๋๋ O(1)์ด ์๋๋๋ค. (์ด ๋ถ๋ถ๋ ์ฐพ์๋ณด์๋๊ฒ ์ข์ ๊ฒ ๊ฐ์์) ๋ฐ๋ผ์ ํด๋น ํ์ด์ ์๊ฐ ๋ณต์ก๋ ๋ถ์๋ ๋ค์ ์ด๋ค์ ธ์ผํ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ญ๋๋ค.
There was a problem hiding this comment.
js์ ๋ฐฐ์ด์ด ์์๋ค์ด ์ฐ๋ฌ์ ์ฃผ์๊ฐ์ ๊ฐ์ง๋ ํํ๊ฐ ์๋๋ค๋ณด๋ O(1)๋ผ๊ณ ์๊ฐํ๋๋ฐ์, ํ ๋ฒ ์์๋ณด๊ณ ์ฃผ์์ ๋ค์ ๋ฌ์ ์ปค๋ฐํ๊ฒ ์ต๋๋ค. ์ฝ๋ฉํธ ๊ฐ์ฌํฉ๋๋ค!
There was a problem hiding this comment.
js์ unshift๋ ๋ฐฐ์ด์ ์์๊ฐ ๋งจ ์์ ์ถ๊ฐ๋ ๋๋ง๋ค ๋ค ๋ชจ๋ ์์๋ค์ index๊ฐ 1 ์ฉ ์ถ๊ฐ๋๋ฏ๋ก O(n)์ ๋ณต์ก๋๋ฅผ ๊ฐ๋๋ค๋ ๊ฒ์ ์๊ฒ๋์์ต๋๋ค!!
- JavaScript ๋ฐฐ์ด์ ๋ด๋ถ ๊ตฌ์กฐ
JavaScript ์์ง(V8 ๊ธฐ์ค)์์ ๋ฐฐ์ด์ ๋ ๊ฐ์ง ํํ๋ก ์ ์ฅ๋ ์ ์์ต๋๋ค.
โ
(1) Packed Elements (์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ, ๋น ๋ฆ)
๋ฐฐ์ด์ด ์ซ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๊ณ , ์ธ๋ฑ์ค๊ฐ ์ฐ์์ ์ด๋ฉด
๋ด๋ถ์ ์ผ๋ก ์ผ๋ฐ์ ์ธ ๋์ ๋ฐฐ์ด์ฒ๋ผ ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋จ
O(1)๋ก ๋น ๋ฅธ ์กฐํ๊ฐ ๊ฐ๋ฅ
let arr = [1, 2, 3, 4]; // Packed Elements ์ฌ์ฉ
โ
(2) Sparse Elements (๋น์ฐ์์ , ๋๋ฆผ)
๋ฐฐ์ด์ด ์ค๊ฐ์ ๋น ์์๊ฐ ์๊ฑฐ๋, ์ซ์๊ฐ ์๋ ๊ฐ์ฒด๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ
๋ด๋ถ์ ์ผ๋ก ํด์ ํ
์ด๋ธ(Hash Map)์ฒ๋ผ ๋์
์์๋ฅผ ์กฐํํ ๋ ํด์ ํ
์ด๋ธ์์ ๊ฒ์ํด์ผ ํ๋ฏ๋ก ๋๋ ค์ง (O(1) โ O(n))
let arr = [];
arr[0] = 1;
arr[100] = 2; // ํฌ์ ๋ฐฐ์ด (Sparse Array)
โ
์์ฒ๋ผ ์ธ๋ฑ์ค๊ฐ ์ฐ์๋์ง ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฐ์์ ์ด์ง ์์!
๋ต์ ์ ์ถ ๋ฌธ์
์ฒดํฌ ๋ฆฌ์คํธ
In Review๋ก ์ค์ ํด์ฃผ์ธ์.