λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

πŸƒ algorithm/leetcode93

LeetCode 46 - Permutations (Medium) 문제 LeetCode - 46번 풀이 κ³Όμ • μ£Όμ–΄μ§„ λ°°μ—΄λ‘œ μˆœμ—΄μ„ λ§Œλ“œλŠ” λ¬Έμ œμž…λ‹ˆλ‹€. λ°±νŠΈλž˜ν‚Ή 을 톡해 λ°°μ—΄μ˜ μš”μ†Œλ“€μ„ ν•˜λ‚˜μ”© μˆœνšŒν•˜λ©° μˆœμ—΄μ„ λ§Œλ“€μ–΄μ£Όλ©΄ λ©λ‹ˆλ‹€. μ΄λ•Œ λ°°μ—΄ μ—°μ‚°μœΌλ‘œ push or pop 을 μ‚¬μš©ν•˜μ§€ μ•Šκ³  javascript 의 spread μ—°μ‚°μžλ‘œ μƒˆλ‘œμš΄ 배열을 λ§Œλ“€μ–΄ λ„˜κ²¨μ£ΌλŠ” 방식을 μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. μ½”λ“œ /** * @param {number[]} nums * @return {number[][]} */ var permute = function (nums) { const ans = []; function permutation(selected) { if (selected.length === nums.length) { ans.push(selected); return; } for (let i = .. 2021. 3. 3.
LeetCode 21 - Merge Two Sorted Lists (Easy) 문제 LeetCode - 21번 풀이 κ³Όμ • 병합 μ •λ ¬ 의 병합 과정을 직접 κ΅¬ν˜„ν•΄λ³΄λŠ” λ¬Έμ œμž…λ‹ˆλ‹€. 병합 μ •λ ¬ 은 각각의 λ°°μ—΄ μš”μ†Œλ₯Ό κ· λ“±ν•˜κ²Œ λ‚˜λˆ„κ³  λ‚˜λˆ„μ–΄μ§„ 배열을 μ •λ ¬ν•˜μ—¬ ν•©μΉ˜λŠ” 뢄할정볡 을 μ‚¬μš©ν•˜λŠ” μ •λ ¬ μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€. 두 배열이 λͺ¨λ‘ μ •λ ¬λœ μƒνƒœμ΄κΈ° λ•Œλ¬Έμ— λ°°μ—΄μ˜ κ°€μž₯ μ•ž μš”μ†ŒλΆ€ν„° μ„œλ‘œ 비ꡐ해주며 μž‘μ€ μš”μ†Œλ“€μ„ ν•˜λ‚˜μ”© μΆ”κ°€ν•΄λ‚˜κ°€λ©΄ λ©λ‹ˆλ‹€. λ§Œμ•½ λ‘˜ 쀑 ν•˜λ‚˜μ˜ 배열이 λΉ„μ–΄μžˆμ„ κ²½μš°μ—λŠ” λΉ„μ–΄μžˆμ§€ μ•Šμ€ 배열을 κ·ΈλŒ€λ‘œ 이어뢙이면 λ©λ‹ˆλ‹€. μž…λ ₯으둜 λ‘˜ 쀑 ν•œ 배열이 λΉ„μ–΄μžˆλŠ” 것이 μ‘΄μž¬ν•  수 μžˆμœΌλ―€λ‘œ 이 뢀뢄에 λŒ€ν•΄ λ³„λ„μ˜ μ˜ˆμ™Έμ²˜λ¦¬λ₯Ό μ§„ν–‰ν•΄μ€¬μŠ΅λ‹ˆλ‹€. μ½”λ“œ /** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = .. 2021. 3. 2.
LeetCode 240 - Search a 2D Matrix II (Medium) 문제 LeetCode - 155번 풀이 κ³Όμ • 이차원 λ°°μ—΄μ—μ„œ λͺ©ν‘œκ°’이 μ‘΄μž¬ν•˜λŠ”μ§€ νŒλ‹¨ν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€. κ·Έλƒ₯ 브루트 포슀 둜 μ ‘κ·Όν•œλ‹€λ©΄ O(MN) 의 μ‹œκ°„ λ³΅μž‘λ„λ‘œ ν•΄κ²°ν• μˆ˜λ„ μžˆμ§€λ§Œ μ’€ 더 효율적인 탐색을 μœ„ν•΄ 이뢄 탐색 을 μ μš©ν–ˆμŠ΅λ‹ˆλ‹€. 각 행이 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬λ˜μ–΄ μžˆλ‹€λŠ” 점을 μ΄μš©ν•΄μ„œ 각 ν–‰λ§ˆλ‹€ 이뢄 탐색 을 μˆ˜ν–‰ν•΄ μ›ν•˜λŠ” 값이 μ‘΄μž¬ν•˜λŠ”μ§€ νŒλ‹¨ν•©λ‹ˆλ‹€. μ½”λ“œ /** * @param {number[][]} matrix * @param {number} target * @return {boolean} */ var searchMatrix = function (matrix, target) { for (let row of matrix) { if (bisect(row, target)) return true; } r.. 2021. 3. 2.
LeetCode 155 - Min Stack (Easy) 문제 LeetCode - 155번 풀이 κ³Όμ • μŠ€νƒ 을 μ‚¬μš©ν•΄μ„œ min stack 을 κ΅¬ν˜„ν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€. λ‹¨μˆœν•˜κ²Œ κ΅¬ν˜„ν•˜λ©΄ μ΅œμ†Œκ°’μ„ 찾을 λ•Œλ§ˆλ‹€ Math.min 을 μ‚¬μš©ν•  μˆ˜λ„ μžˆμ§€λ§Œ 문제 쑰건과 같이 μƒμˆ˜ μ‹œκ°„μ— μ΅œμ†Œκ°’μ„ μ°ΎκΈ° μœ„ν•΄μ„œλŠ” λ‹€λ₯Έ 방법이 ν•„μš”ν•©λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ 두 개의 μŠ€νƒμ„ μ‚¬μš©ν•˜μ—¬ 값을 μ €μž₯ν•˜λ„λ‘ ν•©λ‹ˆλ‹€. ν•˜λ‚˜λŠ” λ“€μ–΄μ˜¨ μˆœμ„œλŒ€λ‘œ μŒ“μ•„ μ˜¬λ¦¬λŠ” μŠ€νƒμ΄κ³  λ‹€λ₯Έ ν•˜λ‚˜λŠ” 이에 λŒ€μ‘ν•˜μ—¬ ν˜„μž¬κΉŒμ§€μ˜ μ΅œμ†Œκ°’μ„ μ €μž₯ν•˜λŠ” μŠ€νƒμœΌλ‘œ μ‚¬μš©ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ 1, 2, 0, 3 이 μˆœμ„œλŒ€λ‘œ μž…λ ₯λœλ‹€κ³  ν•œλ‹€λ©΄ 두 개의 μŠ€νƒμ€ λ‹€μŒκ³Ό 같은 μƒνƒœλ₯Ό κ°€μ§€κ²Œ λ©λ‹ˆλ‹€. | 3 | | 0 | | 0 | | 0 | | 2 | | 1 | | 1 | | 1 | A μŠ€νƒ B μŠ€νƒλ”°λΌμ„œ minValue λ₯Ό 톡해 ν˜„μž¬κΉŒμ§€μ˜ μ΅œμ†Œκ°’μ„ .. 2021. 3. 2.
LeetCode 39 - Combination Sum (Medium) 문제 LeetCode - 39번 풀이 κ³Όμ • 쀑볡 μ‘°ν•© 을 λ§Œλ“€μ–΄μ„œ μˆ«μžλ“€μ˜ 합이 target 이 λ˜λŠ” λͺ¨λ“  경우λ₯Ό μ°ΎλŠ” λ¬Έμ œμž…λ‹ˆλ‹€. μ—¬κΈ°μ„œ 쀑볡 μ‘°ν•© μ΄λž€ μ„œλ‘œ λ‹€λ₯Έ n개λ₯Ό 쀑볡을 ν—ˆμš©ν•˜μ—¬ r 개λ₯Ό μ„ νƒν•˜λŠ” 경우 λ₯Ό λ§ν•©λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄μ„œλŠ” λ°±νŠΈλž˜ν‚Ή 을 ν™œμš©ν•΄μ„œ λͺ¨λ“  쑰합을 νƒμƒ‰ν•΄μ£ΌλŠ” 과정이 ν•„μš”ν•©λ‹ˆλ‹€. κΈ°μ‘΄ μ‘°ν•©μ—μ„œλŠ” i 번쩨 숫자λ₯Ό μ„ νƒν–ˆμ„ 경우 κ·Έ λ‹€μŒ 숫자인 i + 1 번째 λΆ€ν„° ν•˜λ‚˜μ”© κ³¨λΌμ•Όν•˜μ§€λ§Œ 쀑볡을 ν—ˆμš©ν•˜κΈ° λ•Œλ¬Έμ— 선택 μ‹œμž‘μ μ„ i 번째 λΆ€ν„° ν•΄μ£Όλ©΄ λ©λ‹ˆλ‹€. μ½”λ“œ /** * @param {number[]} candidates * @param {number} target * @return {number[][]} */ var combinationSum = function (candidates,.. 2021. 3. 2.
LeetCode 20 - Valid Parentheses (Easy) 문제 LeetCode - 20번 풀이 κ³Όμ • μŠ€νƒ 을 ν™œμš©ν•˜λŠ” λŒ€ν‘œμ μΈ κ΄„ν˜Έ 쌍 λ§žμΆ”κΈ° λ¬Έμ œμž…λ‹ˆλ‹€. λ‹«λŠ” κ΄„ν˜Έ κ°€ λ‚˜νƒ€λ‚¬μ„ λ•Œ μŠ€νƒμ˜ κ°€μž₯ μœ„μ— 짝이 λ§žλŠ” μ—¬λŠ” κ΄„ν˜Έ κ°€ μ‘΄μž¬ν•˜λŠ”μ§€ νŒλ‹¨ν•˜λ©΄ λ˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€. 이번 문제λ₯Ό 톡해 javascript 의 includes λ©”μ„œλ“œλ₯Ό ν™œμš©ν•˜λŠ” 방법을 μ•Œ 수 있게 λ˜μ—ˆμŠ΅λ‹ˆλ‹€. || μ—°μ‚°μžλ‘œ or 처리 ν•΄μ£ΌλŠ” 것이 μ½”λ“œλ„ κΈΈμ–΄μ§€κ³  λ²ˆκ±°λ‘œμ› λŠ”λ° μ›ν•˜λŠ” μš”μ†Œκ°€ μ‘΄μž¬ν•˜λŠ”μ§€ νŒλ‹¨ν•˜λŠ” includes λ₯Ό ν™œμš©ν•΄μ„œ μ‰½κ²Œ 쑰건을 νŒλ‹¨ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. μ½”λ“œ /** * @param {string} s * @return {boolean} */ function top(stack) { return stack[stack.length - 1]; } var isValid = function (s.. 2021. 3. 2.