y-seo
y-seo의 딩코 기록들
y-seo
  • 분류 전체보기 (175)
    • Computer Science (49)
      • Database Design & Query Lan.. (10)
      • Network Security (16)
      • Software Engineering (6)
      • Computer Network (17)
    • Spring (50)
      • Spring-Basic (11)
      • SpringBoot-AWS (7)
      • SpringBoot&JPA (22)
      • 토비의 스프링 (3)
      • + α (7)
    • Cloud (22)
      • AWS (4)
      • GCP (1)
      • ElasticSearch (17)
    • Test (3)
    • Project (4)
    • Algorithm (24)
      • 개념 (9)
      • 문제풀이 (15)
    • AI (3)
      • About (2)
      • AIDU ez (1)
    • IT (5)
      • SQLD (4)
      • ADsP (1)
    • Error (4)
    • ETC (1)
    • Review (8)
    • Free mover (1)
    • Frontend (0)
      • Next.js (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 글

최근 댓글

전체 방문자
오늘
어제

태그

  • 네트워크
  • 김영한
  • JPA
  • 컴퓨터 네트워킹 하향식 접근
  • 알기 쉬운 정보보호개론 3판
  • 자바
  • 보안
  • algorithm
  • 알고리즘
  • 스프링부트
  • 인프런
  • springboot
  • 백준
  • 네트워크보안
  • Python
  • Spring
  • 파이썬
  • baekjoon
  • java
  • 스프링

티스토리

hELLO · Designed By 정상우.
y-seo

y-seo의 딩코 기록들

Algorithm/개념

[알고리즘] 투 포인터(Two Pointers)

2023. 9. 15. 21:50

 


 

투 포인터 (Two Pointers)

  • 리스트에 순차적으로 접근해야 할 때 두 개의 점의 위치를 기록하며 나아가는 알고리즘이다
  • 시작점과 끝점을 그 두개의 점으로 지정한다
  • 특정한 합을 가지는 부분 연속 수열 문제에 적용 가능하다
  • 두 개의 점이므로 투 포인터라 한다
  • 반복문만 사용하는 것보다 메모리와 시간 효율성을 높일 수 있다
  • 시간 복잡도는 O(N) 이다 (반복문 사용시 O(N^2))

 


 

앞에서 시작하는 포인터 & 끝에서 시작하는 포인터

  • 두 포인터 중 start 포인터를 가장 앞 인덱스 0으로 설정하고, 나머지 end 포인터를 가장 마지막 인덱스 n으로 설정한다.
  • 찾아야 하는 값 < 두 점의 합 → end 포인터를 인덱스를 하나 줄여 감소
  • 찾아야 하는 값 > 두 점의 합 → start 포인터를 인덱스 하나 늘려 증가
  • start와 end 포인터가 동일한 값을 가리키면 종료 (중간에서 만나는 경우)
  • 조건 : 배열이 정렬되어 있어야 하며 중복되는 수가 없어야 한다
  • 주로 2중 for문을 사용하여 코드를 작성

 


 

토끼와 거북이

  • 제일 앞부터 시작하지만 두 포인터가 속도가 다르게 움직인다.
  • 주로 slow와 fast 포인터로 이름을 붙인다.
  • 주로 fast는 반복문마다 값이 커지고 slow는 조건에 따라 값이 커지도록 설정한다. 
  • 두 포인터 slow와 fast를 각각 인덱스 0과 1로 지정한다.
  • 주로 정렬된 배열에서 중복되는 숫자를 제거할 때 사용한다.
  • 이때 새로운 리스트를 생성하는 것이 아닌 리스트의 요소들을 변경하는 형식으로 진행되는 것이다.

 

저작자표시 (새창열림)

'Algorithm > 개념' 카테고리의 다른 글

[알고리즘] 그리디(Greedy) 알고리즘  (0) 2024.03.18
[알고리즘] 이진 탐색(Binary Search) + 매개변수 탐색(Parametric Search)  (0) 2023.08.13
[알고리즘][파이썬] Exhaustive Search / 완전 탐색  (0) 2023.07.08
[알고리즘] 알고리즘 스터디 계획 / Algorithm Study Plan  (0) 2023.07.08
[알고리즘][파이썬] 그래프 / graph  (0) 2023.01.25
    'Algorithm/개념' 카테고리의 다른 글
    • [알고리즘] 그리디(Greedy) 알고리즘
    • [알고리즘] 이진 탐색(Binary Search) + 매개변수 탐색(Parametric Search)
    • [알고리즘][파이썬] Exhaustive Search / 완전 탐색
    • [알고리즘] 알고리즘 스터디 계획 / Algorithm Study Plan
    y-seo
    y-seo

    티스토리툴바