Algorithm 11

[LeetCode 55] Jump Game - 탐욕법(Greedy) 풀이 및 최적화

[LeetCode] Jump Game - 탐욕법(Greedy) 풀이 및 최적화문제 설명LeetCode의 "Jump Game" 문제는 배열의 시작점에서 끝점까지 도달할 수 있는지 확인하는 문제입니다.nums[i]는 i번째 인덱스에서 최대 몇 칸까지 점프할 수 있는지를 나타냅니다.nums[0]에서 nums[n-1]까지 도달할 수 있으면 true, 불가능하면 false를 반환해야 합니다.📌 처음 문제를 풀었을 때의 접근 방식처음에는 배열을 사용하여 방문 가능 여부를 체크하는 방식으로 접근했습니다.export function canJump(nums: number[]): boolean { const list = new Array(nums.length).fill(false); // 방문 가능 여부 배열 lis..

Algorithm/LeetCode 2025.03.08

[LeetCode 122] Best Time to Buy and Sell Stock II - Greedy & DP 풀이

[LeetCode] Best Time to Buy and Sell Stock II - Greedy & DP 풀이문제 설명LeetCode의 "Best Time to Buy and Sell Stock II" 문제는 여러 번 매매하여 최대 이익을 얻는 문제입니다.prices[i]는 i번째 날의 주가를 나타냅니다.여러 번 매매 가능하지만, 보유 중에는 추가 매수가 불가능합니다. (즉, 한 번 매수하면 반드시 매도 후 다시 매수 가능)최대 이익을 구하는 것이 목표입니다.처음 문제를 풀었을 때의 생각처음에는 **"최적의 매수-매도 시점을 찾는 문제"**라고 생각했어요.하지만, **"가격이 오를 때마다 매수-매도를 반복하면 최대 이익을 얻을 수 있다"**는 점을 깨달았습니다.이 접근법은 탐욕법(Greedy Algor..

Algorithm/LeetCode 2025.03.07

[LeetCode 169] Majority Element - 보이어-무어 투표 알고리즘 (Boyer-Moore Voting Algorithm) 풀이

[LeetCode] Majority Element - 보이어-무어 투표 알고리즘 (Boyer-Moore Voting Algorithm) 풀이문제 설명LeetCode의 "Majority Element" 문제는 배열에서 과반수 요소(majority element)를 찾는 문제입니다.과반수 요소는 배열 길이 n의 절반(⌊n / 2⌋)을 초과하여 등장하는 요소입니다. 문제에서 항상 과반수 요소가 존재한다고 보장되므로, 이를 활용하여 최적화된 방법을 사용할 수 있습니다.처음 문제를 풀었을 때의 생각처음에는 각 숫자의 등장 횟수를 카운트해서 가장 많이 등장하는 숫자를 찾으면 되겠다고 생각했어요. 하지만 직접 구현해 보니 추가적인 메모리를 사용해야 했고, 더 최적화할 방법이 필요했습니다.이 문제에서는 추가 메모리 없..

Algorithm/LeetCode 2025.03.06

[LeetCode 189] Rotate Array - TypeScript 문제 풀이 및 최적화

[LeetCode] Rotate Array - TypeScript 문제 풀이 및 최적화문제 설명LeetCode의 "Rotate Array" 문제는 배열을 오른쪽으로 k번 회전하는 문제입니다.배열을 직접 수정해야 하며, 추가적인 공간을 사용하지 않고 O(1) 공간 복잡도로 해결해야 합니다.처음 문제를 풀었을 때의 생각처음에는 단순히 배열을 k번 반복해서 이동시키면 되겠다고 생각했어요. 하지만 직접 구현해 보니 비효율적이고 너무 오래 걸린다는 걸 깨달았어요.이전에는 문제를 풀면서 개선점을 찾아 나가는 방식이었는데, 이번에는 문제의 패턴을 분석한 후 최적화된 방법을 한 번에 떠올렸습니다.이 문제를 해결하는 과정에서 배열을 회전하는 문제에서 자주 사용되는 "배열 뒤집기" 패턴을 발견할 수 있었습니다.비효율적인 ..

Algorithm/LeetCode 2025.03.05

[LeetCode 26] Remove Duplicates from Sorted Array - TypeScript 문제 풀이 및 최적화

[LeetCode] Remove Duplicates from Sorted Array - TypeScript 문제 풀이 및 최적화문제 설명LeetCode의 "Remove Duplicates from Sorted Array" 문제는 정렬된 배열에서 중복된 요소를 제거하고, 남은 요소의 개수를 반환하는 문제입니다.배열을 직접 수정해야 하며, 추가적인 공간을 사용하지 않고 O(1) 공간 복잡도로 해결해야 합니다. 반환값으로는 중복 제거 후 남은 요소의 개수를 제공합니다.처음 문제를 풀었을 때의 생각이전에는 코드를 작성한 후 개선점을 찾아가면서 최적화하는 방식으로 문제를 해결했어요. 그런데 이번에는 문제를 분석한 후 바로 최적화된 코드가 한 번에 떠올랐습니다. 이전보다 문제 해결 능력이 향상된 것을 느낄 수 있었..

Algorithm/LeetCode 2025.03.04

맥북 모니터 받침대 솔직 리뷰! 목 건강까지 챙기는 거치대

💻 맥북 모니터 받침대 솔직 리뷰! 목 건강까지 챙기는 거치대책상에서 맥북을 그냥 쓰다 보니 목이 너무 아픈 거예요. 🥲그래서 모니터 받침대를 찾아보다가 드디어 하나 샀어요!기존에 회사에서는 회전이 안 되는 제품을 썼는데, 이번엔 회전까지 되는 제품으로 선택!과연 만족스러울지? 직접 써본 솔직 후기 남겨볼게요! 📝📌 맥북 받침대, 왜 필요할까?맥북은 디자인은 예쁘지만 화면 높이가 낮아요.그래서 오래 쓰면 목이랑 어깨가 뻐근해져요. 💀✔️ 모니터 받침대가 있으면?✅ 시선이 높아져서 거북목 예방✅ 타이핑할 때 손목 부담 감소✅ 책상 공간 활용도 UP저는 특히 목이 너무 아파서 바로 구매했어요! 🤯🛍️ 내가 선택한 맥북 모니터 받침대!👉 제품 보러 가기이번에 선택한 제품은 회전 기능까지 되는 맥..

Algorithm/LeetCode 2025.03.03

[LeetCode 27] Remove Element - TypeScript 문제 풀이 및 최적화

[LeetCode] Remove Element - TypeScript 문제 풀이 및 최적화문제 설명LeetCode의 "Remove Element" 문제는 배열 nums에서 특정 값 val을 제거하고, 남은 요소의 개수를 반환하는 문제입니다.배열을 직접 수정해야 하며, 순서는 바뀌어도 무관합니다. 반환값으로는 유효한 길이를 제공합니다.문제를 처음 접했을 때 어려웠던 점처음에는 단순히 val을 제거하는 문제라고 생각했는데, 실제로는 맨 끝 요소와 바꿔가면서 해결해야 하는 문제였습니다. 처음 문제를 풀 때는 배열에서 val을 그냥 지우려고 했지만, 삭제하는 방식으로는 올바르게 해결되지 않았습니다.배열의 순서를 유지할 필요가 없기 때문에 맨 끝 요소와 교환하며 해결하는 방식을 이해하는 것이 핵심이었습니다.최적화..

Algorithm/LeetCode 2025.03.03

[LeetCode] 80. Remove Duplicates from Sorted Array II - TypeScript 문제 풀이 및 개선 과정

[LeetCode] Remove Duplicates from Sorted Array II - TypeScript 문제 풀이 및 개선 과정문제 설명LeetCode의 "Remove Duplicates from Sorted Array II" 문제는 정렬된 배열에서 각 원소가 최대 2번까지만 포함되도록 중복을 제거하는 문제입니다.배열을 직접 수정해야 하며, 중복을 제거한 후에도 배열 크기는 유지되어야 합니다. 반환값으로 유효한 배열 길이를 제공합니다.처음 풀이먼저, 문제를 해결하기 위해 다음과 같은 코드를 작성했습니다.export function removeDuplicates(nums: number[]): number { let current = 1; for (let index = 2; index 초기 코드..

Algorithm/LeetCode 2025.03.02

🔥 LeetCode 13번 | 로마 숫자를 정수로 변환하기 (TypeScript 풀이)

LeetCode 13번 | 로마 숫자를 정수로 변환하기 (TypeScript 풀이)이번 글에서는 LeetCode 13번 문제 "Roman to Integer" 를 TypeScript로 해결하는 방법을 다룹니다.이 문제는 코딩 테스트나 개발자 면접에서 자주 등장하는 문자열 처리 & 수학적 규칙 적용 유형입니다.🔹 문제 설명 (Roman to Integer)로마 숫자는 다음과 같은 기호로 표현됩니다.I = 1, V = 5, X = 10, L = 50, C = 100, D = 500, M = 1000IV = 4, IX = 9, XL = 40, XC = 90, CD = 400, CM = 900 처럼 작은 값이 앞에 오면 감산됩니다.주어진 로마 숫자 문자열을 정수로 변환하는 함수를 구현해야 합니다.🔹 풀이 전..

Algorithm/LeetCode 2025.02.28

[LeetCode] Merge Sorted Array 문제 풀이: 초기 코드와 공간 복잡도 개선

LeetCode Merge Sorted Array 문제 풀이: 초기 코드와 공간 복잡도 개선이번 포스트에서는 LeetCode의 Merge Sorted Array 문제를 해결한 과정을 소개합니다. 처음에는 제가 작성한 초기 코드 방식으로 문제를 해결한 후, 추가 공간 사용 문제(공간 복잡도)를 개선하여 in-place 방식으로 최적화한 과정을 다룹니다.문제 개요Merge Sorted Array 문제는 두 개의 정렬된 배열을 하나의 정렬된 배열로 병합하는 문제입니다.입력:nums1: 크기가 m+n인 배열, 처음 m개의 요소는 유효한 값이며 나머지 n개는 추가 공간입니다.nums2: n개의 요소로 구성된 배열.목표:nums1에 nums2의 요소들을 in-place로 병합하여 오름차순으로 정렬된 배열을 만드는 ..

Algorithm/LeetCode 2025.02.26