Data Structure & Algorithm
-
알고리즘, 문제 해결 패턴, Sliding WindowData Structure & Algorithm 2024. 6. 12. 21:37
Sliding WindowSliding Window는 프로그래밍에서 배열이나 문자열과 같은 연속된 데이터 구조 내에서 부분 집합의 합, 평균, 최대값 또는 최소값 등을 효율적으로 계산하기 위해 사용하는 알고리즘 기법입니다. 이 기법은 고정된 크기나 가변 크기의 윈도우를 사용하여 문제를 해결합니다.기본 개념Sliding Window의 기본 개념은 다음과 같습니다:윈도우 설정: 초기 윈도우 크기나 시작점을 설정합니다.윈도우 이동: 데이터를 한 번에 하나씩 이동하면서 윈도우 내 값을 갱신합니다.결과 갱신: 윈도우 내 값을 기준으로 필요한 결과를 갱신합니다.예제예제 1: 고정된 크기의 윈도우를 사용한 최대 합 찾기다음은 고정된 크기의 윈도우를 사용하여 배열 내 연속된 요소들의 최대 합을 찾는 예제입니다.func..
-
알고리즘, 문제해결 패턴, Mulitple PointersData Structure & Algorithm 2024. 6. 12. 21:35
Mulitple PointersMultiple Pointers의 기본 개념은 다음과 같습니다:포인터 설정: 배열이나 문자열의 시작과 끝, 또는 특정 조건에 따라 포인터를 설정합니다.포인터 이동: 특정 조건을 만족할 때까지 포인터를 이동합니다.조건 만족 확인: 포인터가 특정 조건을 만족하는지 확인하여 문제를 해결합니다.시간 복잡도Multiple Pointers를 사용하는 알고리즘의 시간 복잡도는 일반적으로 O(n)입니다. 이는 배열이나 문자열을 한 번만 순회하면서 문제를 해결하기 때문입니다.활용 예시Multiple Pointers 기법은 다음과 같은 다양한 문제에서 유용하게 사용됩니다:두 개의 포인터를 사용하여 배열 내 특정 조건을 만족하는 요소 찾기중복 요소 제거문자열 내 특정 패턴 찾기정렬된 배열에서 ..
-
알고리즘, 문제해결 패턴, Frequency CountersData Structure & Algorithm 2024. 6. 12. 21:32
Frequency CountersFrequency Counters는 프로그래밍에서 특정 요소의 발생 빈도를 효율적으로 계산하는 알고리즘 기법입니다. 주로 배열, 문자열 또는 다른 자료 구조 내에서 요소의 빈도를 세어야 할 때 사용됩니다. 이 방법은 일반적으로 시간 복잡도를 줄이고 코드를 보다 효율적으로 만들기 위해 사용됩니다.기본 개념Frequency Counter의 기본 개념은 다음과 같습니다:자료 구조 선택: 주로 해시맵(또는 객체)을 사용하여 각 요소의 발생 빈도를 저장합니다.반복문 사용: 데이터를 한 번 순회하면서 각 요소의 빈도를 해시맵에 기록합니다.결과 분석: 필요에 따라 빈도 데이터를 사용하여 문제를 해결합니다.시간 복잡도이 자바스크립트 구현은 각 배열 또는 문자열을 한 번만 순회하기 때문에..