lala9663
Bump into
lala9663
전체 방문자
오늘
어제
  • 분류 전체보기 (158)
    • JavaScript (1)
    • Java (39)
    • Spring (28)
    • IntelliJ (7)
    • Git,Github (2)
    • CS (22)
    • Algorithm (23)
      • Algorithm 문제 (13)
    • 공부방 (9)
    • 그 외 (27)
      • TIL (24)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 스트림(Stream)
  • 1193
  • Til
  • 백준
  • Get
  • 자바
  • Spring
  • 백준 벌집
  • Java
  • 웹 3.0
  • thread
  • 백준 2292
  • 정적
  • jsp
  • servlet
  • 동적
  • Post
  • Intellij
  • 웹서버
  • try-catch
  • was
  • 자바 람다

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
lala9663
Algorithm

[알고리즘] 효율적인 배열/리스트 탐색을 위한 투 포인터와 슬라이딩 윈도우 알고리즘

Algorithm

[알고리즘] 효율적인 배열/리스트 탐색을 위한 투 포인터와 슬라이딩 윈도우 알고리즘

2023. 5. 24. 01:02

배열이나 리스트에서 특정 조건을 만족하는 부분을 효율적으로 탐색하는 알고리즘이다. 이 두 알고리즘은 비슷하다.

투 포인터 알고리즘

  • 투 포인터 알고리즘이란?
    • 배열이나 리스트에서 두 개의 포인터를 이용해 특정 조건을 만족하는 부분을 탐색하는 알고리즘이다.
    • 주로 정렬된 배열이나 리스트에서 사용되며, 선형 시간 복잡도 O(N)를 갖는 장점이 있다.
  • 동작 방식
    • 시작 포인터와 끝 포인터를 배열의 양 끝으로 초기화 한다.
    • 시작 포인터와 끝 포인터를 이동하면서 조건을 만족하는 부분을 탐색한다.
    • 시작 포인터와 끝 포인터가 만나면 탐색을 종료한다.
  • 사용 사례
    • 배열에서 두 수의 합이 특정 값이 되는 경우를 찾을 때
    • 배열에서 특정 조건을 만족하는 최단/최장 구간을 찾을 때

슬라이딩 윈도우 알고리즘

  • 슬라이딩 윈도우 알고리즘이란?
    • 고정된 크기의 윈도우 배열이나 리스트에 적용하여 특정 조건을 만족하는 부분을 탐색하는 알고리즘이다.
    • 윈도우를 한 칸씩 이동시키면서 연산을 수행하므로, 상수 시간 복잡도 O(1) 를 갖는 장점이 있다.
  • 동작 방식
    • 초기에 윈도우를 배열의 처음에 위치시킨다.
    • 윈도우를 한 칸씩 이동하면서 연산을 수행하고, 필요한 경우 윈도우 크기를 조정한다.
    • 윈도우를 끝까지 이동하면서 탐색을 종료한다.
  • 사용 사례
    • 배열에서 연속된 부분 배열의 합이 특정 값이 되는 경우를 찾을 때
    • 문자열에서 최소/최대 윈도우를 찾거나 유효한 애너그램을 찾을 때

공통점

부분 구간 탐색: 투 포인터 알고리즘과 슬라이딩 윈도우 알고리즘은 모두 배열이나 리스트에서 특정한 조건을 만족하는 부분 구간을 탐색하는 데 사용된다.

차이점

투 포인터 알고리즘: 투 포인터 알고리즘은 배열 또는 리스트에서 두 개의 포인터를 이용하여 조건을 만족하는 부분을 탐색한다. 주로 정렬된 배열에서 사용되며, 시작 포인터와 끝 포인터를 이동하면서 조건을 만족하는 구간을 찾는다.

슬라이딩 윈도우 알고리즘: 슬라이딩 윈도우 알고리즘은 고정된 크기의 윈도우를 배열 또는 리스트에 적용하여 조건을 만족하는 부분을 탐색한다. 윈도우를 한 칸씩 이동하면서 연산을 수행하고, 필요에 따라 윈도우 크기를 조정한다.

'Algorithm' 카테고리의 다른 글

[알고리즘] 삽입 정렬 (Insertion Sort)  (0) 2023.01.16
[알고리즘] 선택 정렬 (Selection Sort)  (0) 2023.01.16
[알고리즘] 버블 정렬(Bubble Sort)  (0) 2023.01.16
[알고리즘] 자료구조: 트리(Tree)  (0) 2023.01.08
[알고리즘] 자료구조: 해쉬  (0) 2022.12.07
  • 투 포인터 알고리즘
  • 슬라이딩 윈도우 알고리즘
  • 공통점
  • 차이점
'Algorithm' 카테고리의 다른 글
  • [알고리즘] 삽입 정렬 (Insertion Sort)
  • [알고리즘] 선택 정렬 (Selection Sort)
  • [알고리즘] 버블 정렬(Bubble Sort)
  • [알고리즘] 자료구조: 트리(Tree)
lala9663
lala9663
초보의 험난한 공부

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.