๐ algorithm/leetcode93 LeetCode 108 - Convert Sorted Array to Binary Search Tree (Easy) ๐ก ๋ฌธ์ LeetCode - 108๋ฒ ๐ฏ ํ์ด ๊ณผ์ ๊ตฌ๊ฐ nums ์ ๋ํด์ ์ด์งํ์ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด nums ์ ์ค๊ฐ๊ฐ์ ๋ฃจํธ๋ ธ๋๋กํ๊ณ ํด๋น ๋ ธ๋๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋ ๊ตฌ๊ฐ์ ๋ํด ์ฌ๊ท์ ์ผ๋ก ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ฉด ๋ฉ๋๋ค. ์ด ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ์ด์ ๋ ๋ญ๊น์? ๊ตฌ๊ฐ nums์ ๊ฐ์๋ฅผ x ๋ผ๊ณ ํ๊ณ ๊ฐ๋จํ ์ฆ๋ช ์ ํด๋ณด๊ฒ ์ต๋๋ค. x ๊ฐ ์ง์(2n)์ด๋ฉด ๋๋จธ์ง ๋ ๊ตฌ๊ฐ์ (n, n-1) ๋ก ๋๋๊ณ , ํ์(2n-1)๋ผ๋ฉด (n-1, n-1) ๋ก ๋๋ฉ๋๋ค. ๋๋ฌธ์ ๋ ํธ๋ฆฌ๊ฐ์ ๋์ด ์ฐจ์ด๊ฐ 1๋ณด๋ค ํฐ ๊ฒฝ์ฐ๋ ์๊ฒ ๋ฉ๋๋ค. ๐จ๐ป ์ฝ๋ /** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (va.. 2023. 6. 6. LeetCode 328 - Odd Even Linked List (Medium) ๐ก ๋ฌธ์ LeetCode - 328๋ฒ ๐ฏ ํ์ด ๊ณผ์ O(1) ์ ๊ณต๊ฐ ๋ณต์ก๋์ O(n) ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด์ ํ์๋ฒ์งธ์ ์ง์๋ฒ์งธ์ ์์นํ ๋ ธ๋๋ฅผ ๋ถ๋ฆฌํ ๋ค์ ๋ ๋ฆฌ์คํธ๋ฅผ ์ด์ด์ฃผ๋ ์์ ์ ํด์ผํฉ๋๋ค. ๋ฆฌ์คํธ์ ์ฒซ๋ฒ์งธ ๋ ธ๋๋ ํญ์ ํ์๋ฒ์งธ ๋ ธ๋์ด๊ณ ํ์์ ์ง์๋ ์์๋๋ก ๋์ค๋ ๊ฒ์ ๋ช ๋ฐฑํ ์ฌ์ค์ด๋, ์ ์ฝ ์กฐ๊ฑด์ ๋ง์กฑํ๊ธฐ ์ํด ํ๋ฒ์ ๋ฆฌ์คํธ ํ์ ๋์ค์ prev ์ cur ํฌ์ธํฐ๋ฅผ ์ด์ฉํด์ ์ด์ ๋ ธ๋์ ๋ค์ ๋ ธ๋ ํฌ์ธํฐ๊ฐ ํ์ฌ ๋ ธ๋์ ๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ๋ณ๊ฒฝํฉ๋๋ค. ๋ํ ๋ ๋ฆฌ์คํธ๋ฅผ ํฉ์น๊ธฐ ์ํ mergePointer ๋ ๊ฐ์ฅ ์ต์ ์ ํ์๋ฒ์งธ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ํฉ๋๋ค. ๋ชจ๋ ์ํ๋ฅผ ๋ง์น๋ฉด mergePointer ๋ก ๋ ๋ฆฌ์คํธ๋ฅผ ์ด์ด์ฃผ๋ฉด๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ ๋ ฅ๋ฐ๋ ๋ฆฌ์คํธ์ ๋ณ๊ฐ๋ก .. 2023. 5. 29. LeetCode 704 - Binary Search (Easy) ๐ก ๋ฌธ์ LeetCode - 704๋ฒ ๐ฏ ํ์ด ๊ณผ์ ์ ๋ ฌ๋ ๋ฐฐ์ด์์ ํน์ target ์ index ๋ฅผ ๋ฐํํ๋ ๋ฌธ์ ์ ๋๋ค. ์ด๋ถ ํ์ ์ ์ด์ฉํ๋ฉด ์ฝ๊ฒ ํด๊ฒฐํ ์ ์์ต๋๋ค. ๐จ๐ป ์ฝ๋ /** * @param {number[]} nums * @param {number} target * @return {number} */ var search = function(nums, target) { let head = 0 let tail = nums.length - 1 let answer = -1 while (head target) { tail = mid - 1 } else { answer = mid break } } return answer }; 2023. 5. 14. LeetCode 438 - Find All Anagrams in a String (Medium) ๐ก ๋ฌธ์ LeetCode - 438๋ฒ ๐ฏ ํ์ด ๊ณผ์ ๋ฌธ์์ด s ์์ p ์ ์๋๊ทธ๋จ์ ๋ง์กฑํ๋ ๋ชจ๋ ๋ถ๋ถ ๋ฌธ์์ด์ ์์น๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ ๋๋ค. ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๊ณ ๋ คํด์ ์ต์ ์ ์๊ฐ ๋ณต์ก๋๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผํ๋๋ฐ, sliding window ๋ฅผ ํ์ฉํ๋ฉด O(n) ์ ๋ชจ๋ ์์น์์ ์๋๊ทธ๋จ์ ํ๋จํ ์ ์์ต๋๋ค. ๋จผ์ p ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฌธ์ ๋น๋์ ํด์๋งต์ ์์ฑํฉ๋๋ค. ์ดํ ๋ ๊ฐ์ ํฌ์ธํฐ left ์ right , ์๋๊ทธ๋จ ๊ตฌ์ฑ์ ํ์ํ ๋ฌธ์ ๊ฐ์์ ํฉ์ ์ํ count ๋ฅผ ์ ์ํฉ๋๋ค. count ๊ฐ 0์ด ๋๋ฉด ๋ชจ๋ ๋ฌธ์๋ค์ด ํ์ํ ๋น๋์๋งํผ ๋ฐ๊ฒฌ๋์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. window ์ ํฌ๊ธฐ๋ ๊ณง p ์ ๊ธธ์ด์ ๊ฐ๊ธฐ ๋๋ฌธ์ left ์ right ๊ฐ์ ๊ฐ๊ฒฉ์ด window size ์ ๋๋ฌํ๋ฉด left ๋ฅผ ํ๋.. 2023. 5. 14. LeetCode 42 - Trapping Rain Water (Hard) ๐ก ๋ฌธ์ LeetCode - 42๋ฒ ๐ฏ ํ์ด ๊ณผ์ ์ ๋ฉ์ด๋ฅผ ์ฐพ๊ธฐ ์ํด์๋ ๋จ์กฐ๊ฐ์ ๊ตฌ๊ฐ์ ์์์ผํฉ๋๋ค. O(n) ์ ์ด๋ฅผ ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ๋ฌด์์ผ๊น์? ์ด๋ฅผ ์ํด monotonic stack์ ํ์ฉํ ์ ์์ต๋๋ค. height ์ ์ธ๋ฑ์ค๋ฅผ i ๋ผ๊ณ ํ๊ฒ ์ต๋๋ค. (a) height[i] ๊ฐ stack top ๋ณด๋ค ์๋ค๋ฉด ๊ทธ๋ฅ push ํฉ๋๋ค. (b) stack top ๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค๋ฉด push ํ๊ธฐ์ ์ stack ์์ height[i] ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฐ์ ๊ฐ์ง๋ ์์๋ค์ ๋ชจ๋ pop ํฉ๋๋ค. ๋ฌผ ์ ๋ฉ์ด์ ํฌ๊ธฐ๋ฅผ ์๋ ค๋ฉด ๋์ด * ๋๋น ๋ฅผ ์์์ผํฉ๋๋ค. ๋๋น๋ index ๊ฐ์ผ๋ก ์ฝ๊ฒ ์ ์ ์๊ณ , ๋์ด๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํ ์ ์์ต๋๋ค. min(height[stack[top-1]], height[i]).. 2023. 4. 30. LeetCode 238 - Product of Array Except Self (Medium) ๐ก ๋ฌธ์ LeetCode - 238๋ฒ ๐ฏ ํ์ด ๊ณผ์ ๋ฐฐ์ด num ์์ i ๋ฒ์งธ ์์๋ง ์ ์ธํ ๋๋จธ์ง ์์๋ค์ ๊ณฑ์ i ๋ฒ์งธ ์ธ๋ฑ์ค์ ํ ๋นํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํด์ผํฉ๋๋ค. ์ด๋ O(n) ์ ์๊ฐ๋ณต์ก๋๋ก ์ํ๋์ด์ผํ๊ณ , ๋๋๊ธฐ ์ฐ์ฐ์ ์ฌ์ฉํ๋ฉด ์๋๋ ์ ์ฝ์กฐ๊ฑด์ด ์์ต๋๋ค. ์ด๋ฅผ ์ํด์ i ๋ฒ์งธ ์์๋ฅผ ์ ์ธํ ๋๋จธ์ง ์์๋ค์ ๊ณฑ์ ๋ค์๊ณผ ๊ฐ์ด ๋๋ ์ ์๊ฐํ ์ ์์ต๋๋ค. answer[i] = num[0...i-1] * num[i+1...] ๋ถ๋ถํฉ ์๊ณ ๋ฆฌ์ฆ์ ์ฐจ์ฉํ๋ฉด, ์์์ ํ์ํ ๊ตฌ๊ฐ๊ณฑ์ ๋ฏธ๋ฆฌ ๊ณ์ฐํด๋์ ์ ์์ต๋๋ค. ํ ๋ฐฐ์ด์๋ ์ผ์ชฝ์์๋ถํฐ ๋์ ํ ๊ณฑ์ ์ ์ฅํ๊ณ , ๋ค๋ฅธ ๋ฐฐ์ด์๋ ์ค๋ฅธ์ชฝ์์๋ถํฐ ๋์ ํ ๊ณฑ์ ์ ์ฅํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ ์์ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ์ ๊ณ์ฐํ ์ ์์ต๋๋ค. answer[i] = prefixLeft[.. 2023. 4. 24. ์ด์ 1 2 3 4 ยทยทยท 16 ๋ค์