Dlise
시원한 냉장고
Dlise
전체 방문자
오늘
어제
  • 시원한 냉장고 (132)
    • Java (31)
      • Java (26)
      • Spring (5)
    • Algorithm & PS (25)
      • Algorithm (14)
      • Problem Solving (11)
    • Network (12)
    • Database (2)
    • Data Structure (4)
    • OOP & CleanCode (5)
    • Web (0)
    • Git (2)
    • AI (2)
    • Project (1)
      • Discord Bot (1)
    • Error (19)
    • Tools (5)
    • 수학 (5)
      • 확률과 통계(기초) (5)
    • 컴퓨터 구조 (3)
    • 활동 (16)
      • 행사 & 여행 (6)
      • 자격증 (4)
      • 회고 (6)
      • 기타 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 열혈강의자료구조
  • 가장쉬운알고리즘책
  • 중위 표기법
  • spring security in action second edition
  • java
  • 후위 표기법
  • 네트워크
  • 백준
  • 통계학
  • CleanCode

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Dlise

시원한 냉장고

Algorithm & PS/Algorithm

알고리듬 - 투 포인터

2023. 6. 26. 21:22

투 포인터

2개의 포인터를 활용해 문제를 푸는 방식이다.

일반적으로

  • 두 개의 포인터가 모두 앞에서 시작하는 경우

  • 하나는 앞, 하나는 뒤에서 시작하는 경우

로 구분된다.

 

이를 활용하는 문제를 바로 보자.

백준: 수들의 합 5
https://www.acmicpc.net/problem/2018
 

2018번: 수들의 합 5

어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한

www.acmicpc.net

 

해당 문제는 정수 N이 주어질 때 N 미만의 연속된 자연수의 합으로 N을 나타낼 수 있는 경우의 수를 구해야 한다.

 

만약 N이 6이라면 답은 2(1+2+3, 6)이다.

이 문제는 투 포인터를 이용하면 쉽게 풀 수 있는데,

 

N = 6일 때 과정은 아래와 같다.

  • 더한 값(sum)이 N보다 작으면 L을 움직이고 값을 더한다.
  • sum이 N보다 크면 R을 움직이고 값을 뺀다.
  • sum이 6일 때 answer를 1씩 증가해 배열의 마지막까지 탐색하면 종료한다.

 

투 포인터를 떠올린다면 쉽게 풀 수 있다.

 

 

 

이와 달리 L은 왼쪽, R은 오른쪽에서 시작하는 경우의 문제도 있다. 

아래 문제가 그것으로 투 포인터를 이용하면 쉽게 풀 수 있다.

백준: 주몽
https://www.acmicpc.net/problem/1940
 

1940번: 주몽

첫째 줄에는 재료의 개수 N(1 ≤ N ≤ 15,000)이 주어진다. 그리고 두 번째 줄에는 갑옷을 만드는데 필요한 수 M(1 ≤ M ≤ 10,000,000) 주어진다. 그리고 마지막으로 셋째 줄에는 N개의 재료들이 가진 고

www.acmicpc.net

 

'Algorithm & PS > Algorithm' 카테고리의 다른 글

알고리듬 - 버블, 선택, 삽입 정렬  (0) 2023.06.27
알고리듬 - 슬라이딩 윈도우  (0) 2023.06.26
알고리듬 - 구간 합  (0) 2023.06.24
알고리듬 - 시간복잡도(Time Complexity)  (0) 2023.06.22
알고리듬 - dx, dy를 이용한 이차원 배열 이동  (0) 2023.06.21
    'Algorithm & PS/Algorithm' 카테고리의 다른 글
    • 알고리듬 - 버블, 선택, 삽입 정렬
    • 알고리듬 - 슬라이딩 윈도우
    • 알고리듬 - 구간 합
    • 알고리듬 - 시간복잡도(Time Complexity)
    Dlise
    Dlise

    티스토리툴바