๐ algorithm/leetcode93 LeetCode 62 - Unique Paths (Medium) ๋ฌธ์ LeetCode - 62๋ฒ ํ์ด ๊ณผ์ ์ ํ์ ์ธ ๋์ ๊ณํ๋ฒ ์ ํ์ฉํ ๊ฒฝ๋ก ์ฐพ๊ธฐ ๋ฌธ์ ์ ๋๋ค. ์์ ์ง์ ์์ ์ด๋ํ ์ ์๋ ๋ฐฉํฅ์ด ์ค๋ฅธ์ชฝ๊ณผ ์๋์ชฝ์ผ๋ก ๊ณ ์ ๋์ด ์๊ธฐ ๋๋ฌธ์ dp(x, y) = (x, y) ์ง์ ์์ finish์ ๋๋ฌํ๋ ๊ฒฝ๋ก์ ๊ฐ์ ๋ผ๊ณ ์ ์ํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ ํ์์ ์ธ์ธ ์ ์์ต๋๋ค. dp(x, y) = dp(x+1, y) + dp(x, y+1) ์ด๋ ๊ฒฉ์๋ฅผ ๋ฒ์ด๋๊ฑฐ๋ finish ์ง์ ์ ๋์ฐฉํ๋ ๊ธฐ์ ์ฌ๋ก๋ฅผ ์ฒ๋ฆฌํด์ค๋ค๋ฉด ์ฝ๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์ฝ๋ /** * @param {number} m * @param {number} n * @return {number} */ var uniquePaths = function (m, n) { const memo = new Array.. 2021. 3. 2. LeetCode 121 - Best Time to Buy and Sell Stock (Easy) ๋ฌธ์ LeetCode - 121๋ฒ ํ์ด ๊ณผ์ ์์ธ๊ฐ ์ฃผ์ด์ง ๋ฐฐ์ด์์ ์ฃผ์์ ์ฌ๊ณ ํ์์ ๋ ๊ฐ์ฅ ํฐ ์ด์ค์ ๋จ๊ธฐ๋ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๋ฌธ์ ์ ๋๋ค. ์ง๊ด์ ์ผ๋ก ์ฃผ์์ด ๊ฐ์ฅ ๋ฎ์ ๋ ์ฌ์ ๊ฐ์ฅ ๋์ ๋ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ํฐ ์ด์ค์ ๋จ๊ธด๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฐฐ์ด์ ๊ฐ ์์๋ฅผ ์ํํ๋ฉฐ ์ต์ ๋น์ฉ ๊ฐ์ ๊ฐฑ์ ํด์ฃผ๋ ๊ฒ๊ณผ ๋์์ ๊ฐ ์ํ๋ง๋ค ํ์ฌ ์ธ๋ฑ์ค๊น์ง ํ์ํ ์ต์ ๋น์ฉ ๊ณผ์ ์ฐจ์ด๊ฐ์ ํตํด ์ต๋ ํ๋งค ์์ต ์ O(N)์ ์๊ฐ ๋ณต์ก๋๋ก ์ป์ ์ ์์ต๋๋ค. ์ ๋น์ฑ ์ฆ๋ช ์ต์ ๋น์ฉ์ ์ ํํ๋ ์ฐ๋ฆฌ์ ํ์ ์๊ณ ๋ฆฌ์ฆ ์ ์๋ช ํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋จํ ์ฆ๋ช ํ๊ณ O(N) ์ ํ์์ ์ํํ ์ ์๋ค๋ ์ ๋น์ฑ์ ๋ฐ์ ธ๋ณด๊ฒ ์ต๋๋ค. ์ฐ์ ๋งค ์์ธ๋ง๋ค ์ต์๋น์ฉ์ ๊ฐฑ์ ํ ๊ฒฐ๊ณผ ์ต์ ํด๋ฅผ ์ฐพ์ง ๋ชปํ๋ค๊ณ ํ๊ฒ ์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์ค์ ์ต์ ํด(๊ฐ์ ).. 2021. 3. 2. LeetCode 101 - Symmetric Tree (Easy) ๋ฌธ์ LeetCode - 101๋ฒ ํ์ด ๊ณผ์ ์ฃผ์ด์ง ํธ๋ฆฌ๊ฐ ์ต์์ ๋ฃจํธ๋ฅผ ์ค์ฌ์ผ๋ก ์๋ก ๋์นญ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๊ณ ์๋์ง ํ๋จํ๋ ๋ฌธ์ ์ ๋๋ค. ์ด๋ฅผ ์ํด์ ๋์นญ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ ํธ๋ฆฌ๋ฅผ ํ๋ ์์๋ก ๊ทธ๋ ค์ ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณํ์์ต๋๋ค. ์์ ๊ฐ์ด ๋์นญ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ ํธ๋ฆฌ๋ฅผ ์ด๋ค ๋ฐฉ๋ฒ์ผ๋ก ํ๋จํด์ค ์ ์์๊น์? ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๊ฒ ์ง๋ง ์ ๋ ํธ๋ฆฌ์ ์ํ๋ฅผ ์์ฉํ์ฌ ๊ตฌํํ์์ต๋๋ค. ๋์นญ์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ํธ๋ฆฌ๋ ์ต์์ ๋ฃจํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ ์๋ธํธ๋ฆฌ์ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์ ๋ฐฐ์น๊ฐ ์๋ก ๋ฐ๋์ด๊ธฐ ๋๋ฌธ์ ์ผ์ชฝ ์๋ธํธ๋ฆฌ์์๋ ์ผ๋ฐ์ ์ธ ์ ์ ์ํ ๋ฅผ ์ํํ์๊ณ , ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์์๋ ๋์นญ๋์ด ์๋ค๋ ๊ฐ์ ํ์ ์ผ์ชฝ ์์๋ณด๋ค ์ค๋ฅธ์ชฝ ์์์ ๋จผ์ ๋ฐฉ๋ฌธํ๊ฒํ์ฌ ํ์์ ์ํํ์ต๋๋ค. ๋ง์ฝ ํด๋น ํธ๋ฆฌ๊ฐ ๋์นญ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด ๋ ์ํ ๊ฒฐ.. 2021. 3. 2. LeetCode 876 - Middle of the Linked List (Easy) ๋ฌธ์ LeetCode - 876๋ฒ ํ์ด ๊ณผ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์ ์ค๊ฐ ์์น์ ๊ฐ์ ์ฐพ๋ ๋ฌธ์ ์ ๋๋ค. ๋ณ๋์ ์๊ณ ๋ฆฌ์ฆ์ ์๊ตฌํ๋ ๊ฒ์ด ์๋ ๋จ์ ๊ตฌํ ๋ฌธ์ ๋ก ๋ฆฌ์คํธ์ head ๋ถํฐ ํฌ์ธํฐ๋ฅผ ์ฎ๊ฒจ๊ฐ๋ฉฐ ๋ฆฌ์คํธ์ ํฌ๊ธฐ๋ฅผ ๊ตฌํ ๋ค ์ค๊ฐ ์์น๋ฅผ ๊ณ์ฐํ์ฌ ๊ตฌํ์ต๋๋ค. ์ฝ๋ /** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * this.next = (next===undefined ? null : next) * } */ /** * @param {ListNode} head * @return {ListNode} */ var middleNode = function (head).. 2021. 3. 2. LeetCode 221 - Maximal Square (Medium) ๋ฌธ์ LeetCode - 221๋ฒ ํ์ด ๊ณผ์ ์ฃผ์ด์ง martix ์์์ ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ์ ์ฐพ๋ ๋ฌธ์ ์ ๋๋ค. ๊ฐ๊ฐ์ ์ ์ฌ๊ฐํ์ ๋๋ค๋ฅธ ์ ์ฌ๊ฐํ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค๋ ์ ์ ํตํด ๋์ ๊ณํ๋ฒ ์ผ๋ก ํ์ด๊ฐ ๊ฐ๋ฅํ ๋ฌธ์ ์ ๋๋ค. ๋ฐ๋ผ์ dp(x, y) = (x, y)๋ฅผ ์ผ์ชฝ ๋ชจ์๋ฆฌ๋ก ํ๋ ์ต๋ ์ ์ฌ๊ฐํ์ ํ ๋ณ์ ๊ธธ์ด ๋ผ๊ณ ์ ์ํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ ํ์์ ์ธ์ธ ์ ์์ต๋๋ค. dp(x,y) = 0 if board[x][y] == 0 else min(dp(x+1, y), dp(x+1, y+1), dp(x, y+1)) + 1 ์ด๋ board ์ ๊ฐ ์ง์ ์ ์ํํ๋ฉฐ 1์ด ๋ฐ๊ฒฌ๋ ๋๋ง๋ค dp ๋ฅผ ํธ์ถํ๋ฉฐ ์ต๋๊ฐ์ ๊ฐฑ์ ํ๋ฉด ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ์ฝ๋ /** * @param {character[][]} matrix .. 2021. 3. 2. LeetCode 543 - Diameter of Binary Tree (Easy) ๋ฌธ์ LeetCode - 543๋ฒ ํ์ด ๊ณผ์ ์ด์งํธ๋ฆฌ์ ์ง๋ฆ์ ๊ตฌํ๋ ๋ฌธ์ ์ ๋๋ค. ์ด์งํธ๋ฆฌ ํน์ ์ผ๋ฐ์ ์ธ ํธ๋ฆฌ์ ์ง๋ฆ์ ์ฐพ๊ธฐ ์ํด์๋ ์์์ ๋ ์ ์ ์ฌ์ด์ ๊ฐ์ ์ ๊ฐ์๊ฐ ๊ฐ์ฅ ๋ง์ ๊ฒฝ๋ก๋ฅผ ์์๋ด์ผํฉ๋๋ค. ์ฐ์ root ๋ฅผ ๋ฃจํธ ๋ ธ๋๋ก ๊ฐ์ง๋ ํธ๋ฆฌ๊ฐ ๋ค์๊ณผ ๊ฐ์ด ๋ ๊ฐ์ง๊ฐ ์กด์ฌํ ์ ์์ต๋๋ค. 1 / \ 2 3 /\ 4 5 1 / 2 / \ 4 5 ์ ๊ทธ๋ฆผ์์๋ ์ด์ง ํธ๋ฆฌ๋ฅผ ๊ฐ์ ํ์ง๋ง ์ผ๋ฐ์ ์ธ ํธ๋ฆฌ์์๋ ๋์ผํ๊ฒ ์ ์ฉ๋ฉ๋๋ค. ๋ฐ๋ผ์ ํ๋์ ์๋ธํธ๋ฆฌ์์ ๊ฐ์ฅ ๊ธด ๊ฒฝ๋ก(์ง๋ฆ)๋ ์๋ ธ๋ - ์๋ ธ๋ ํน์ ๋ฃจํธ๋ ธ๋ - ์๋ ธ๋ ์ ํํ๋ฅผ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค. ๋ฃจํธ๋ ธ๋ - ์๋ ธ๋ ์ ๊ฒฝ์ฐ ํธ๋ฆฌ์ ๋์ด๋ฅผ ๊ตฌํ๋ฉด ๋์ง๋ง ์๋ ธ๋ - ์๋ ธ๋ ์ ๊ฒฝ์ฐ ๋ด๋ถ ๋ ธ๋ ์ฌ์ด์์ ๊ฐ์ฅ ๊ธด ๊ฒฝ๋ก๊ฐ ํ์ฑ๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์์ด๋์ด๊ฐ ํ์.. 2021. 3. 2. ์ด์ 1 ยทยทยท 11 12 13 14 15 16 ๋ค์