55. Jump Game
·
Coding Test/LeetCode
난이도: 중간 (Medium)링크: LeetCode 55풀이 날짜: 2025/10/15 1. 문제 이해각 인덱스의 값은 그 위치에서 최대 몇 칸까지 점프할 수 있는지를 의미한다.배열의 시작점에서 출발해 마지막 인덱스까지 도달 가능한지 여부를 true 또는 false로 반환하는 문제다. 예시:입력: [2,3,1,1,4]출력: true // 0→1→4 로 이동 가능입력: [3,2,1,0,4]출력: false // 인덱스 3에서 멈춤 2. 접근 방식 — Greedy (탐욕적 선택)이 문제는 모든 가능한 경로를 탐색할 필요가 없다. 중요한 건 “지금 위치에서 갈 수 있는 가장 먼 거리”가 어디인지뿐이다. 즉, 매 순간 현재까지 내가 도달할 수 있는 가장 멀리 있는 지점이 어디인가만 추적하면 된다. 이 접..
122. Best Time to Buy and Sell Stock II
·
Coding Test/LeetCode
난이도: 중간 (Medium)링크: LeetCode 122풀이 날짜: 2025/10/15 1. 문제 이해여러 날 동안의 주식 가격이 주어졌을 때, 여러 번의 거래(사고팔기)를 통해 얻을 수 있는 최대 이익을 구하는 문제다.단, 동시에 여러 주식을 보유할 수 없고, 하루에 사고 그다음 날 파는 식으로 거래해야 한다. 즉, 가격이 오르면 그 차익을 모두 더하고, 가격이 떨어지면 아무 행동도 하지 않는 방식으로 최대 이익을 계산한다. 2. 풀이 아이디어이 문제의 핵심은 “모든 상승 구간의 이익을 더하는 것”이다. 가격이 오를 때마다 팔았다가 다시 사는 것이 전체적으로 봤을 때 최대 이익을 보장한다.만약 가격이 계속 오르는 경우, 예를 들어 [1,2,3,4] 라면, 한 번만 거래하면: 4 - 1 = 3여러 번 ..
80. Remove Duplicates from Sorted Array II
·
Coding Test/LeetCode
난이도: 중간 (Medium)링크: LeetCode 80풀이 날짜: 2025/10/15 1. 문제 이해정렬된 배열 nums가 주어졌을 때, 중복된 원소가 최대 2번까지만 나타나도록 배열을 수정해야 한다.추가 배열을 사용하지 않고 제자리(in-place) 에서 해결해야 한다.즉, 각 원소는 최대 두 번까지만 남길 수 있고, 그 이후의 중복은 제거해야 한다. 2. 접근 방식이 문제는 투 포인터(Two Pointers) 를 활용하는 전형적인 배열 조작 문제이다.LeetCode 26번 문제(“Remove Duplicates from Sorted Array”)의 확장 버전이라고 볼 수 있다. 핵심 아이디어k 포인터를 이용해 “결과 배열의 길이”를 관리한다.현재 원소 nums[i] 가 결과 배열의 두 칸 전(num..
189. Rotate Array
·
Coding Test/LeetCode
난이도: 중간 (Medium)링크: LeetCode 189풀이 날짜: 2025/10/15 1. 문제 이해정수 배열 nums가 주어지고, 이를 오른쪽으로 k번 회전시킨 결과를 구하는 문제이다.Input: nums = [1,2,3,4,5,6,7], k = 3Output: [5,6,7,1,2,3,4]오른쪽으로 한 칸 회전할 때마다 마지막 원소가 맨 앞으로 이동한다. 2. 접근 아이디어이 문제는 직관적으로는 k번 반복해서 한 칸씩 이동시키면 되지만, 그 방법은 O(n * k)라서 비효율적이다.대신 배열의 부분 반전(reverse) 을 이용하면, 한 번에 O(n)으로 해결할 수 있다. 핵심 아이디어는 다음과 같다.전체 배열을 뒤집는다 → [1,2,3,4,5,6,7] → [7,6,5,4,3,2,1]앞쪽 k개의 부분..
121. Best Time to Buy and Sell Stock
·
Coding Test/LeetCode
난이도: 쉬움 (Easy)링크: LeetCode 121풀이 날짜: 2025/10/15 1. 문제 이해주식 가격 배열 prices가 주어질 때, 한 번의 매수와 매도로 얻을 수 있는 최대 이익을 구하는 문제이다.매수는 반드시 매도보다 먼저 해야 함.매도는 한 번만 가능. 2. 접근 아이디어한 번의 거래로 최대 수익을 내야 하므로, 최소 가격을 추적 - 현재까지 본 가격 중 가장 작은 값을 기록 → minPrice현재 가격으로 가능한 최대 이익 계산 - prices[i] - minPrice → 지금 팔면 얻을 수 있는 최대 이익최대 이익 갱신 - maxProfit = Math.max(maxProfit, prices[i] - minPrice)최소 가격 갱신 - minPrice = Math.min(minPri..
169.Majority Element
·
Coding Test/LeetCode
난이도: Easy링크: LeetCode 169풀이 날짜: 2025/10/15 1. 문제 이해주어진 배열 nums에서 과반수 이상(배열 길이의 절반 이상) 등장하는 숫자를 찾는 문제다.반드시 과반수 이상 존재한다고 가정하기 때문에, 한 값이 전체 배열의 절반 이상을 차지한다.예) [3,2,3] → 3예) [2,2,1,1,1,2,2] → 2 2. 접근 아이디어이 문제의 효율적인 풀이로 Boyer-Moore Voting Algorithm을 사용할 수 있다. Boyer-Moore Voting Algorithm이 알고리즘은 배열을 한 번만 순회하면서 과반수 요소를 찾는 방법이다.후보값과 count를 관리major라는 후보값을 하나 두고, 얼마나 지지받는지 count로 센다고 생각한다.count가 0이면 후보값이 ..