알고리즘 2

알고리즘 1: 슬라이딩 윈도우 (Sliding Window)

✅ 개념 요약고정 크기 또는 가변 크기의 “창(window)”을 배열 위에서 왼→오 방향으로 이동하며 처리시간복잡도 O(n)으로 반복 연산 최소화💡 문제: 가장 긴 1의 연속 구간 (최대 K번 0을 1로 바꾸기)0과 1로 이루어진 배열 nums가 주어진다. 최대 k번 0을 1로 바꿀 수 있을 때,1로만 이루어진 가장 긴 연속 부분 배열의 길이를 구하라.python Input: nums = [1,1,0,0,1,1,1,0], k = 2 Output: 7✅ 풀이 (슬라이딩 윈도우)python def longest_ones(nums, k): left = 0 max_len = 0 zero_count = 0 for right in range(len(nums)): if nums[..

알고리즘 2025.04.02

알고리즘 추천: 투 포인터 (Two Pointer)

✅ 개념 설명투 포인터는 배열을 탐색할 때 두 개의 포인터를 사용해서 효율적으로 문제를 해결하는 방식입니다.보통 정렬된 배열에서, 시간 복잡도를 줄이기 위해 사용합니다.✅ 언제 쓰나?정렬된 배열에서 두 수의 합부분 배열 / 구간합 / 슬라이딩 윈도우중복 제거 / 정렬된 리스트 병합문자열 서브패턴 찾기✅ 핵심 아이디어왼쪽 포인터 (L), 오른쪽 포인터 (R) 를 초기화조건에 따라 포인터를 이동시키며 배열을 탐색특정 조건(합, 길이 등)에 만족하면 정답 후보로 저장📘 예제 문제: 두 수의 합 (Two Sum II - Input Array Is Sorted)🧾 문제 설명정렬된 배열 numbers가 주어질 때, 두 수의 합이 target이 되는 인덱스를 반환하시오.(인덱스는 1부터 시작, 정답은 항상 존재)..

알고리즘 2025.04.02