알고리즘/개념 3

투포인터(Two Pointer)

투 포인터정렬된 배열이나 리스트에서 두 개의 포인터(인덱스)를 이용해 효율적으로 문제를 해결하는 알고리즘 기법💡 기본 아이디어두 개의 포인터두 개의 인덱스(p1, p2)를 사용해 배열의 요소들을 동시에 탐색한다정렬 활용배열이 오름차순(또는 내림차순)으로 정렬되어 있기 때문에,두 포인터가 가리키는 값을 비교하여어느 쪽 포인터를 이동시킬지 결정할 수 있다ℹ️  예시두 정렬된 배열에서 공통 요소 찾기 1. 초기화:배열 A, 배열 B가 있다고 가정포인터 p1은 A의 시작(인덱스 0)에서, p2는 B의 시작(인덱스 0)에서 시작2. 동작 과정:A[p1] == B[p2]두 배열 모두 해당 요소를 포함하므로 공통 요소로 기록두 포인터 모드 한 칸씩 이동A[p1] A[p1]이 더 작으므로 A에서 다음 값과 비교하기 ..

알고리즘/개념 2025.03.30

슬라이딩 윈도우(Sliding Window)

슬라이딩 윈도우(Sliding Window)알고리즘 문제를 풀다 보면, 배열이나 문자열과 같이 연속된 구간에 대한 처리가 필요할 때가 있을텐데,이때 슬라이딩 윈도우 기법을 사용하면 도움이 된다.1. 슬라이딩 윈도우란?슬라이딩 윈도우 기법은 두 개의 포인터(또는 인덱스)를 사용하여배열이나 문자열의 특정 구간(윈도우)를 유지하면서 문제를 해결하는 방법이다.이 기법은 주로 다음과 같은 상황에서 유용하게 사용된다.연속된 구간의 합 구하기특정 조건을 만족하는 최대 또는 최소 길이 구하기중복이 없는 가장 긴 구간 찾기 등2. 기본 아이디어슬라이딩 윈도우는 아래의 단계를 반복하면서 문제를 해결한다.윈도우 정의시작 인덱스(left)와 끝 인덱스(right)를 두어 구간을 정의한다.윈도우 확장right 포인터를 이동시키..

알고리즘/개념 2025.03.26

비트마스킹(Bit Masking)

비트마스킹 (Bit Masking)비트마스킹은 정수를 이진수로 표현해서 특정 상태를 관리하는 기법이다.보통 비트 연산자를 활용해서 데이터를 조작한다. 0b10101(십진수 21)처럼 이진수로 보면, 각각의 자리가 어떤 상태를 나타내는 플래그가 될 수 있다.1 이면 "켜짐" (True, ..)0 이면 "꺼짐" (Flase, ..)📌 비트 연산자 정리연산자설명예시 (A=0b1010, B=0b1100)결과& (AND)둘 다 1이면 1A & B0b1000 (8)``(OR)하나라도 1이면 1`A^ (XOR)다르면 1, 같으면 0A ^ B0b0110 (6)~ (NOT)비트 반전 (1->0, 0->1)~A0b...11110101 (보수연산)비트들을 왼쪽으로 이동A 0b10100 (20)>> (오른쪽 시프트)비트들을..

알고리즘/개념 2025.02.16