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

๐Ÿƒ algorithm/leetcode93

LeetCode 226 - Invert Binary Tree (Easy) ๋ฌธ์ œ LeetCode - 226๋ฒˆ ํ’€์ด ๊ณผ์ • ์ฃผ์–ด์ง„ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ๋’ค์ง‘๋Š” ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ๋ถ„๋“ค์˜ ํ’€์ด๋ฒ•์„ ๋ณด๋‹ˆ level order traversal ์„ ์‚ฌ์šฉํ•˜์‹  ๋ถ„๋“ค๋„ ์žˆ์—ˆ์ง€๋งŒ ์ €๋Š” dfs ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์™€ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ invert ํ•ด์ค€ ๋‹ค์Œ ํ•ด๋‹น ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋ฃจํŠธ๋…ธ๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ค๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์žฌ๊ท€ ํ˜ธ์ถœ์„ ๋ฐ˜๋ณตํ•˜๋ฉด ์ตœ์ข…์ ์œผ๋กœ ๊ธฐ์กด์˜ root ๋Š” invert ๋œ ํŠธ๋ฆฌ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ /** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===.. 2021. 3. 3.
LeetCode 406 - Queue Reconstruction by Height (Medium) ๋ฌธ์ œ LeetCode - 406๋ฒˆ ํ’€์ด ๊ณผ์ • ๊ฐ ์‚ฌ๋žŒ๋“ค์˜ ํ‚ค h ์™€ ์ž์‹ ๋ณด๋‹ค ์•ž์— ์„œ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค ์ค‘ ์ž์‹ ๋ณด๋‹ค ํ‚ค๊ฐ€ ํฐ ์‚ฌ๋žŒ๋“ค์˜ ์ˆ˜ n ์ด ์ฃผ์–ด์งˆ ๋•Œ ์กฐ๊ฑด์— ๋งž๋„๋ก ์‚ฌ๋žŒ๋“ค์„ ๋‚˜์—ดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ์„  n ์˜ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ฉฐ n ์ด ๊ฐ™์„ ๊ฒฝ์šฐ์—๋Š” h ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ •๋ ฌ๋œ ์‚ฌ๋žŒ๋“ค์„ ํ•œ๋ช…์”ฉ ์ž์‹ ์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„ ์‚ฝ์ž…ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ n ์„ ๋งŒ์กฑ์‹œํ‚ค๋ฉด์„œ ์ตœ๋Œ€ํ•œ ๋’ค์— ์œ„์น˜ํ•˜๋„๋ก ์„ค์ •ํ•ด์ฃผ๋„๋ก ํ•˜๋Š” ํƒ์š•์  ์„ ํƒ ์„ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ /** * @param {number[][]} people * @return {number[][]} */ var reconstructQueue = function (people) { const answer = []; peopl.. 2021. 3. 3.
LeetCode 54 - Spiral Matrix (Medium) ๋ฌธ์ œ LeetCode - 54๋ฒˆ ํ’€์ด ๊ณผ์ • 2์ฐจ์› ๋ฐฐ์—ด ์„ ์ด์šฉํ•œ ๊ตฌํ˜„ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด์˜ ์›€์ง์ž„์—์„œ ๊ทœ์น™์„ ์ฐพ์•„ ํ™”์ „ํ•˜๋Š” ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ข€ ๋” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ DFS ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ชจ๋“  ์œ„์น˜๋ฅผ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘์ง€์  (0, 0) ์—์„œ๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ, ์•„๋ž˜์ชฝ, ์™ผ์ชฝ, ์œ„์ชฝ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฉํ–ฅ์„ ํ‹€์–ด๊ฐ€๋ฉฐ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ๋ฐฉํ–ฅ์„ ์ „ํ™˜ํ•˜๋Š” ์‹œ์ ์€ ๋ฐฐ์—ด์„ ๋ฒ—์–ด๋‚˜๊ฑฐ๋‚˜ ์ด๋ฏธ ๋ฐฉ๋ฌธํ•œ ์ง€์ ์„ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•˜๋ ค๊ณ  ํ•  ๋•Œ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋กœ ์›ํ•˜๋Š” ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ /** * @param {number[][]} matrix * @return {number[]} */ var spiralOrder = function (matrix) { const m = matrix.length;.. 2021. 3. 3.
LeetCode 279 - Perfect Squares (Medium) ๋ฌธ์ œ LeetCode - 279๋ฒˆ ํ’€์ด ๊ณผ์ • ์–‘์˜ ์ •์ˆ˜ n ์— ๋Œ€ํ•ด์„œ ์ตœ์†Œ ๊ฐœ์ˆ˜์˜ ์™„์ „ ์ œ๊ณฑ์ˆ˜๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 12 ๋Š” 2์˜ ์ œ๊ณฑ์ธ 4 ๋ฅผ 3๋ฒˆ ๋”ํ•ด์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๊ตฌํ•˜๊ณ ์ž ํ•˜๋Š” ์ˆ˜ n ์„ ์ด์šฉํ•ด์„œ dp(n) = n์„ ์™„์ „ ์ œ๊ณฑ์ˆ˜๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œ ๊ฐœ์ˆ˜ ๋ผ๊ณ  ํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ ํ™”์‹์„ ์„ธ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. dp(n) = min(dp(n-X)+1), ์ด๋•Œ X ๋Š” n์„ ๋„˜๊ธฐ์ง€ ์•Š๋Š” ์™ผ์ „ ์ œ๊ณฑ ์ˆ˜ ์˜ˆ๋ฅผ ๋“ค์–ด `dp(13)` ์€ 9๋ฅผ ์™„์ „ ์ œ๊ณฑ์ˆ˜๋กœ 1๊ฐœ ์„ ํƒํ•˜๊ณ  `dp(13-9) + 1 = dp(4) + 1` ๊ณผ ๊ฐ™์ด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์œ„์™€ ๊ฐ™์ด ์ ํ™”์‹์„ ์„ธ์›Œ์ฃผ๋ฉด `๋™์  ๊ณ„ํš๋ฒ•` ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ /** * @param {num.. 2021. 3. 3.
LeetCode 94 - Binary Tree Inorder Traversal (Medium) ๋ฌธ์ œ LeetCode - 94๋ฒˆ ํ’€์ด ๊ณผ์ • ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ์˜ ์ค‘์œ„ ์ˆœํšŒ ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์žฌ๊ท€ ํ˜ธ์ถœ ์„ ์ด์šฉํ•ด์„œ ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ, ์„œ๋ธŒ ๋ฃจํŠธ, ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ ์ˆœ์„œ๋กœ ๋ฐฉ๋ฌธํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ /** * 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 inord.. 2021. 3. 3.
LeetCode 394 - Decode String (Medium) ๋ฌธ์ œ LeetCode - 394๋ฒˆ ํ’€์ด ๊ณผ์ • ๋ฌธ์ž์—ด์˜ ๊ทœ์น™์— ๋”ฐ๋ผ ๋””์ฝ”๋”ฉํ•˜์—ฌ ์›๋ณธ ๋ฌธ์ž์—ด์„ ์ฐพ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. [ ๊ด„ํ˜ธ ์•ž์—๋Š” ๋ฐ˜๋ณตํ•  ์ˆซ์ž๊ฐ€ ์ฃผ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์Šคํƒ ์„ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋จผ์ € ๋ฌธ์ž์—ด์˜ ๊ฐ ๋ฌธ์ž๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ [ ์™€ ] ๊ทธ๋ฆฌ๊ณ  ์ˆซ์ž ๋ฅผ ์ œ์™ธํ•œ ๋ฌธ์ž๋“ค์€ ๊ทธ๋ƒฅ push ํ•ด์ค๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ˆซ์ž๋ฅผ ๋งŒ๋‚  ๊ฒฝ์šฐ์—๋Š” ํ˜„์žฌ ์Šคํƒ์˜ top ์ด ์ˆซ์ž์ธ์ง€ ํŒ๋‹จํ•˜๊ณ  ์ˆซ์ž๋ผ๋ฉด ํ•ด๋‹น ์ˆซ์ž์— ์ด์–ด๋ถ™์ž…๋‹ˆ๋‹ค. (๋‘ ์ž๋ฆฌ์ˆ˜ ์ด์ƒ์ด ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—) ์ดํ›„ ] ๋ฅผ ๋งŒ๋‚˜๋ฉด [ ๊ฐ€ ๋ฐœ๊ฒฌ๋  ๋•Œ ๊นŒ์ง€ ๋ฌธ์ž๋“ค์„ pop ํ•˜๊ณ  [ ์•ž์˜ ์ˆซ์ž๋งŒํผ repeat ํ•ด์ค๋‹ˆ๋‹ค. ์ตœ์ข…์ ์œผ๋กœ ์Šคํƒ ์— ๋‚จ์•„์žˆ๋Š” ๋ฌธ์ž๋“ค์„ ๋ชจ๋‘ ํ•ฉ์ณ์ฃผ๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์ฐพ๋Š” ์›๋ณธ ๋ฌธ์ž์—ด์ด ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ /** * @param {string} s * @return {str.. 2021. 3. 3.