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

πŸƒ algorithm/leetcode93

LeetCode 35 - Search Insert Position (Easy) πŸ’‘ 문제 LeetCode -35번 🎯 풀이 κ³Όμ • target 이 배열에 μ‘΄μž¬ν•  경우 ν•΄λ‹Ή μš”μ†Œμ˜ indexλ₯Ό, λ§Œμ•½ μ‘΄μž¬ν•˜μ§€ μ•Šμ„ 경우 target 이 μœ„μΉ˜ν•΄μ•Όν•  index λ₯Ό λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜λ₯Ό κ΅¬ν˜„ν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€. 문제 μ‘°κ±΄μ—μ„œ 따라 μ •λ ¬λœ λ°°μ—΄μ—μ„œ 이뢄 탐색 을 μ‚¬μš©ν•˜λ©΄ O(logn) 에 ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€. πŸ‘¨‍πŸ’» μ½”λ“œ /** * @param {number[]} nums * @param {number} target * @return {number} */ var searchInsert = function(nums, target) { let answer = null function findItem(head, tail) { if (head >= tail) { if (nums[head] === target).. 2023. 2. 20.
LeetCode 169 - Majority Element (Easy) 졜근 λͺ‡λ‹¬λ™μ•ˆ LeetCode λ¬Έμ œν’€μ΄λ₯Ό λͺ»ν–ˆλŠ”λ°, μ˜¬ν•΄μ—λŠ” μž¬λ―Έμ™€ 성취감을 μœ„ν•΄ μ‹œκ°„ λ‚ λ•Œλ§ˆλ‹€ μ§¬λ‚΄μ„œ κ°„λ‹¨ν•œ 문제λ₯Ό ν•˜λ‚˜μ”© λ‹€μ‹œ ν’€μ–΄λ³΄λ €κ³ ν•©λ‹ˆλ‹€. πŸ˜„ πŸ’‘ 문제 LeetCode - 169번 🎯 풀이 κ³Όμ • n 크기의 배열이 μ£Όμ–΄μ§ˆ λ•Œ, 과반수 μ΄μƒμ˜ μš”μ†Œλ₯Ό μ°ΎλŠ” λ¬Έμ œμž…λ‹ˆλ‹€. ν•΄μ‹œλ§΅μ„ μ΄μš©ν•΄μ„œ κ΅¬ν˜„ν• μˆ˜λ„ μžˆμ§€λ§Œ μ’€ 더 μ΅œμ ν™”λœ λ°©λ²•μœΌλ‘œ ν•΄κ²°ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. μš”κ΅¬μ‘°κ±΄μ— μ˜ν•΄ 과반수λ₯Ό μ°¨μ§€ν•˜λŠ” μš”μ†Œκ°€ λ°˜λ“œμ‹œ μ‘΄μž¬ν•œλ‹€λŠ” 것이 보μž₯되기 λ•Œλ¬Έμ— 보이어-무어 과반수 νˆ¬ν‘œ μ•Œκ³ λ¦¬μ¦˜ 을 ν™œμš©ν•˜λ©΄ O(n) 의 μ‹œκ°„λ³΅μž‘λ„μ™€ O(1) 의 곡간 λ³΅μž‘λ„λ₯Ό κ°€μ§€λŠ” 풀이λ₯Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. 이 μ•Œκ³ λ¦¬μ¦˜μ„ κ°„λ‹¨νžˆ ν’€μ–΄λ³΄μžλ©΄, 길이 n 을 κ°€μ§€λŠ” λ°°μ—΄ A μ—μ„œ 과반수λ₯Ό μ°¨μ§€ν•˜λŠ” μš”μ†Œ aκ°€ [n/2 + 1] 개 μžˆμ„ κ²½μš°μ— λ‚˜λ¨Έμ§€ μš”μ†Œ.. 2023. 2. 5.
LeetCode 733 - Flood Fill (Easy) πŸ’‘ 문제 LeetCode - 733번 🎯 풀이 κ³Όμ • BFS λ₯Ό μ΄μš©ν•΄μ„œ 도달 κ°€λŠ₯ν•œ λͺ¨λ“  지점을 ν™•μΈν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€. μ—¬κΈ°μ„œ visit μ΄λΌλŠ” 2차원 배열을 μœ μ§€ν•˜λ©° 쀑볡 방문을 검사함과 λ™μ‹œμ— 도달 κ°€λŠ₯ν•œ μœ„μΉ˜λ₯Ό κΈ°λ‘ν•©λ‹ˆλ‹€. πŸ‘¨‍πŸ’» μ½”λ“œ /** * @param {number[][]} image * @param {number} sr * @param {number} sc * @param {number} newColor * @return {number[][]} */ var floodFill = function (image, sr, sc, newColor) { const dr = [0, 0, 1, -1] const dc = [1, -1, 0, 0] const [ROW, COL] = [image.length, .. 2022. 3. 7.
LeetCode 229 - Majority Element II (Medium) πŸ’‘ 문제 LeetCode - 229번 🎯 풀이 κ³Όμ • 배열에 λ‹΄κΈ΄ μˆ«μžλ“€ μ€‘μ—μ„œ 일정 κΈ°μ€€κ°’ μ΄μƒμ˜ μˆ«μžλ“€μ„ μ°Ύμ•„μ„œ λ°˜ν™˜ν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€. 배열에 λ‹΄κΈΈ 수 μžˆλŠ” 숫자의 λ²”μœ„κ°€ 크기 λ•Œλ¬Έμ— 해싱을 μ΄μš©ν•΄μ„œ μˆ«μžλ“€μ˜ 개수λ₯Ό μ„Έμ–΄μ€λ‹ˆλ‹€. μ—¬κΈ°μ„œλŠ” 객체 λŒ€μ‹ μ— 읽고 μ“°λŠ” μ„±λŠ₯이 더 λ›°μ–΄λ‚œ Map 을 μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. πŸ‘¨‍πŸ’» μ½”λ“œ var majorityElement = function (nums) { const numCount = new Map(); const pivot = nums.length / 3; for (const num of nums) { if (numCount.has(num)) { const oldVal = numCount.get(num); numCount.set(num, oldVal + 1); } else.. 2022. 2. 22.
LeetCode 300 - Longest Increasing Subsequence (Medium) 문제 LeetCode - 300번 풀이 κ³Όμ • κ°€μž₯ κΈ΄ λΆ€λΆ„μˆ˜μ—΄μ„ κ΅¬ν•˜λŠ” LIS λ¬Έμ œμž…λ‹ˆλ‹€. 동적 κ³„νšλ²• 을 μ΄μš©ν•΄μ„œ 문제λ₯Ό ν•΄κ²°ν•  μˆ˜λ„ μžˆμ§€λ§Œ 이뢄 탐색 을 μ΄μš©ν•˜λ©΄ Nlog(N) 의 μ‹œκ°„ λ³΅μž‘λ„λ‘œ ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ½”λ“œ /** * @param {number[]} nums * @return {number} */ var lengthOfLIS = function (nums) { const memo = []; for (const num of nums) { if (memo.length === 0) { memo.push(num); continue; } if (memo.length > 0 && memo[memo.length - 1] < num) { memo.push(num); } else { const idx .. 2021. 6. 14.
LeetCode 36 - Valid Sudoku (Medium) 문제 LeetCode - 36번 풀이 κ³Όμ • μŠ€λ„μΏ  λ₯Ό κ΅¬ν˜„ν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€. λŒ€μ‹  λͺ¨λ“  λ‘œμ§μ„ κ΅¬ν˜„ν•˜λŠ” 것은 μ•„λ‹ˆκ³  μ±„μ›Œμ§„ μˆ«μžλ“€μ— λŒ€ν•΄μ„œ μŠ€λ„μΏ  쑰건을 λ§Œμ‘±ν•˜λŠ”μ§€ νŒλ‹¨ν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€. λ¨Όμ € 3x3 크기의 μ„œλΈŒ λ°•μŠ€λ“€μ—μ„œ 19 μ‚¬μ΄μ˜ μˆ«μžλ“€ 쀑 쀑볡이 μ‘΄μž¬ν•˜λŠ”μ§€ κ²€μ‚¬ν•©λ‹ˆλ‹€. 이후 각 ν–‰κ³Ό 열을 μˆœνšŒν•˜λ©° λ§ˆμ°¬κ°€μ§€λ‘œ 19 μ‚¬μ΄μ˜ 숫자 쀑볡성을 κ²€μ‚¬ν•©λ‹ˆλ‹€. μ½”λ“œ /** * @param {character[][]} board * @return {boolean} */ var isValidSudoku = function (board) { const isSubboxRepetition = checkSubboxes(board); if (!isSubboxRepetition) { return false; } for (let .. 2021. 4. 13.