๐ 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. ์ด์ 1 ยทยทยท 7 8 9 10 11 12 13 ยทยทยท 16 ๋ค์