๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿƒ algorithm/leetcode93

LeetCode 136 - Single Number (Easy) ๋ฌธ์ œ LeetCode - 104๋ฒˆ ํ’€์ด ๊ณผ์ • ํ•˜๋‚˜์˜ ์ˆซ์ž๋งŒ 1๊ฐœ๊ฐ€ ์กด์žฌํ•˜๊ณ  ๋‚˜๋จธ์ง€ ์ˆซ์ž๋“ค์€ 2๊ฐœ์”ฉ ์กด์žฌํ•˜๋Š” ๋ฐฐ์—ด์—์„œ 1๊ฐœ ์กด์žฌํ•˜๋Š” ์ˆซ์ž๋ฅผ single number ๋ผ๊ณ  ํ–ˆ์„ ๋•Œ ํ•ด๋‹น ์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ ์กฐ๊ฑด์—์„œ O(N) ์— ์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ ๋น„ํŠธ ์—ฐ์‚ฐ์ž ์ค‘์—์„œ xor ๋ฅผ ํ™œ์šฉํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. xor ์—ฐ์‚ฐ์€ ์„œ๋กœ ๋‹ค๋ฅธ ๋น„ํŠธ์—์„œ๋งŒ 1์ด๊ณ  ๋‚˜๋จธ์ง€๋Š” 0์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ์ˆซ์ž๋ผ๋ฆฌ xor ์„ ํ•˜๋ฉด 0์ด ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ single number ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์ˆ˜๋Š” 2๊ฐœ์”ฉ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— xor ๊ฒฐ๊ณผ 0์ด ๋˜๊ณ  0 ^ single number = single number ๋กœ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ /** * @param {number[]} nums .. 2021. 3. 3.
LeetCode 104 - Maximum Depth of Binary Tree (Easy) ๋ฌธ์ œ LeetCode - 104๋ฒˆ ํ’€์ด ๊ณผ์ • ์ด์ง„ ํŠธ๋ฆฌ์˜ ๋†’์ด ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ DFS ๋ฅผ ์ˆ˜ํ–‰ํ•ด์„œ ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์™€ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ ์ค‘์—์„œ ๋†’์€ height ๋ฅผ ์„ ํƒํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ /** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right) * } */ /** * @param {TreeNode} root * @return {number} */ var maxD.. 2021. 3. 3.
LeetCode 102 - Binary Tree Level Order Traversal (Medium) ๋ฌธ์ œ LeetCode - 102๋ฒˆ ํ’€์ด ๊ณผ์ • ์ด์ง„ ํŠธ๋ฆฌ์˜ level order ํƒ์ƒ‰์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ BFS ๋ฌธ์ œ๋กœ ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•ด์ฃผ๋ฉฐ ํƒ์ƒ‰์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์ฃผ์˜ํ• ์ ์€ ๋ฌธ์ œ ์ถœ๋ ฅ ํ˜•์‹์ด level ์— ์žˆ๋Š” ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด์„œ ๋ฐฐ์—ด๋กœ ์ถ”๊ฐ€ํ•ด์•ผํ•˜๋ฏ€๋กœ ๊ฐ๊ฐ์˜ BFS ๋‹จ๊ณ„๋งˆ๋‹ค ํ˜„์žฌ ํ์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜ ๋งŒํผ ๋ฃจํ”„๋ฅผ ๋Œ๋ฉฐ ์ž์‹ ๋…ธ๋“œ๋“ค์„ ํƒ์ƒ‰ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งˆ์น˜ ๋ฐฑ์ค€์˜ ํ† ๋งˆํ†  ๋ฌธ์ œ์™€ ๋น„์Šทํ•œ ๋ฐฉ์‹์ด์ฃ . ์ด๋ ‡๊ฒŒ ํ•ด์•ผ ํ˜„์žฌ ๋ ˆ๋ฒจ์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํ•จ๊ป˜ ๋ฐฐ์—ด๋กœ ๋ฌถ์–ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ /** * Definition for a binary tree node. * function TreeNode(val, left, righ.. 2021. 3. 3.
LeetCode 617 - Merge Two Binary Trees (Easy) ๋ฌธ์ œ LeetCode - 617๋ฒˆ ํ’€์ด ๊ณผ์ • ๋‘ ๊ฐœ์˜ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ํ•ฉ์น˜๋Š” ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ง๊ด€์ ์œผ๋กœ ์ƒ๊ฐํ–ˆ์„๋•Œ๋Š” ์‰ฌ์šด๊ฑฐ ๊ฐ™์•˜๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ๋ช…ํ™•ํ• ์ง€ ๋งŽ์€ ๊ณ ๋ฏผ์„ ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ €๋Š” merge ๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ํ˜ธ์ถœํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ์„  merge ์˜ ๊ธฐ์ค€์ด ๋˜๋Š” ํŠธ๋ฆฌ๋ฅผ main, ๋‚˜๋จธ์ง€๋ฅผ sub ๋กœ ๋‚˜๋ˆˆ ๋‹ค์Œ ๋‘ ํŠธ๋ฆฌ ๋ชจ๋‘ ํ˜„์žฌ ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ main ์— ๊ฐ’์„ ๋”ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์žฌ๊ท€ํ˜ธ์ถœ ์ „์— ๋จผ์ € ์„œ๋ธŒํŠธ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜์˜€๊ณ  ๋‘ ํŠธ๋ฆฌ ๋ชจ๋‘ ๊ฐ๊ฐ ์™ผ์ชฝ ํ˜น์€ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๊ฐ€ ์กด์žฌํ• ๋•Œ๋งŒ DFS ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ์—๋Š” ๋ณ„๋„์˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์คฌ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ณ„๋„์˜ ์ฒ˜๋ฆฌ๋ž€ main ์˜ ์™ผ์ชฝ(์˜ค๋ฅธ์ชฝ) ์„œ๋ธŒํŠธ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋ฐ sub ์—.. 2021. 3. 3.
LeetCode 98 - Validate Binary Search Tree (Medium) ๋ฌธ์ œ LeetCode - 98๋ฒˆ ํ’€์ด ๊ณผ์ • ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ํŠธ๋ฆฌ๊ฐ€ ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ ์˜ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ ๋Š” ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๋…ธ๋“œ๋ณด๋‹ค ์ปค์•ผํ•˜๊ณ  ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๋…ธ๋“œ๋ณด๋‹ค ์ž‘์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ minMax ๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด DFS ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ํ˜„์žฌ ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ด๋‹น ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’๊ณผ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋‹ค ํ’€๊ณ ๋‚˜์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ํ’€์ด๋ฒ•์„ ๋ณด๋‹ˆ ๊ทธ๋ƒฅ ์ค‘์œ„ ์ˆœํšŒ ๋ฅผ ํ•œ ๋‹ค์Œ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋” ๊ตฌํ˜„ํ•˜๊ธฐ ์‰ฝ๊ณ  ๋ช…ํ™•ํ•œ ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ /** * Definition for a binary tree node. * function TreeNode(val, left, righ.. 2021. 3. 3.
LeetCode 130 - Surrounded Regions (Medium) ๋ฌธ์ œ LeetCode - 130๋ฒˆ ํ’€์ด ๊ณผ์ • X ๋กœ ๋‘˜๋Ÿฌ์‹ธ์ธ O ๋ถ€๋ถ„์€ ๋ชจ๋‘ ๋’ค์ง‘์—ˆ์„ ๋•Œ ์ตœ์ข…์ ์œผ๋กœ ์–ด๋–ค ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง„ board ๊ฐ€ ๋˜๋Š”์ง€ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ด๋•Œ ํ•œ๊ฐ€์ง€ ์ฃผ์˜ํ•  ์ ์€ ๋‘˜๋Ÿฌ์‹ธ๋Š” ํ…Œ๋‘๋ฆฌ๊ฐ€ board ์˜ ๊ฒฝ๊ณ„ ์œ„์— ์กด์žฌํ•˜๋ฉด ์•ˆ๋œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. BFS ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€์œผ๋ฉฐ ํ˜„์žฌ ์ขŒํ‘œ์—์„œ ์ƒํ•˜์ขŒ์šฐ๋กœ ์ด๋™ํ–ˆ์„ ๋•Œ board ๋ฅผ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋Š”์ง€ ์ฒดํฌํ•ด์„œ ์กฐ๊ฑด์„ ๊ฒ€์‚ฌํ•ด์คฌ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ๋ฐœ์ƒํ–ˆ๋˜ ์ด์Šˆ ์ค‘ ํ•˜๋‚˜๋Š” ES6 ์˜ Map ์ž๋ฃŒ๊ตฌ์กฐ์™€ ๊ด€๋ จ๋œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ๋ฐฉ๋ฌธ ์ขŒํ‘œ๋ฅผ ๋ฐฐ์—ด ํ‚ค๊ฐ’์œผ๋กœ Map ์— ์ €์žฅํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ํ…Œ์ŠคํŠธํ•ด๋ณด๋‹ˆ๊นŒ ํ‚ค ๊ฐ’์œผ๋กœ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. (๋งŒ์•ฝ ์ด๋ ‡๊ฒŒ ํ•˜๊ณ  ์‹ถ์œผ๋ฉด ๋ฐฐ์—ด์„ ๋‹ค๋ฅธ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•œ ๋’ค ํ• ๋‹น๋œ ๋ณ€์ˆ˜๊ฐ’์„ ํ™œ์šฉํ•ด ํ‚ค๋กœ ์ง€์ •.. 2021. 3. 3.