3. Longest Substring Without Repeating Characters
·
Coding Test/LeetCode
난이도: 중간 (Medium)링크: LeetCode 3풀이 날짜: 2025/10/19 1. 문제 이해문자열 s에서 중복 문자가 없는 가장 긴 부분 문자열(substring)의 길이를 구하는 문제이다.즉, 문자열을 순회하면서 반복되는 문자가 생기기 전까지의 최대 길이를 구해야 한다. 2. 접근 방식 — Sliding Window (슬라이딩 윈도우)슬라이딩 윈도우(Sliding Window)를 사용하면, 중복 문자가 나올 때마다 윈도우를 한 칸씩 이동시키며 O(n) 시간 내에 해결할 수 있다. 현재 “중복이 없는 문자열 구간”을 윈도우로 유지하면서, 새로운 문자를 오른쪽에 추가할 때 중복이 생기면 왼쪽 첫번째를 중복이 없을 때까지 제거한다. 이 과정을 반복하며 매 순간 가장 긴 윈도우의 길이를 갱신하면 된다..
209. Minimum Size Subarray Sum
·
Coding Test/LeetCode
난이도: 중간 (Medium)링크: LeetCode 209풀이 날짜: 2025/10/19(못품) 1. 문제 이해양의 정수 배열 nums와 정수 target이 주어질 때, 연속된 부분 배열(subarray)의 합이 target 이상이 되는 가장 짧은 길이를 구하는 문제다. 만약 조건을 만족하는 부분 배열이 없다면 0을 반환한다. 2. 접근 방식 — Sliding Window (슬라이딩 윈도우)이 문제는 모든 부분 배열을 검사하면 O(n²) 시간이 걸리므로 비효율적이다. 대신 슬라이딩 윈도우(Sliding Window) 개념을 사용하면 O(n)에 해결할 수 있다. 핵심 아이디어는 다음과 같다. “합이 target 이상이 될 때마다, 왼쪽 포인터를 최대한 오른쪽으로 이동시켜 최소 길이를 찾는다.” 즉,오른쪽 ..
45. Jump Game II
·
Coding Test/LeetCode
난이도: 중간 (Medium)링크: LeetCode 45풀이 날짜: 2025/10/15 1. 문제 이해입력: [2,3,1,1,4]출력: 2설명: 0 → 1 → 4 로 2번 점프배열의 각 원소는 해당 인덱스에서 최대 점프할 수 있는 거리를 의미한다.배열의 시작점(0)에서 출발해 마지막 인덱스에 도달하기 위한 최소 점프 횟수를 구하는 문제다. 2. 접근 방식 — Greedy (탐욕적 접근)이 문제는 모든 경로를 계산할 필요 없이, “한 번의 점프 내에서 도달할 수 있는 최대 범위”를 이용해 해결할 수 있다.탐욕적으로 생각하면, “현재 위치에서 한 번 점프할 때, 다음 점프의 최대 도달 가능 범위를 최대로 넓히는 선택” 만 반복하면 최소 점프 횟수를 구할 수 있다. 이를 위해 다음 세 가지 변수를 사용한다:변..
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..