투 포인터(Two Pointer) 알고리즘(세 수의 합 구하기)

2024. 7. 25. 11:26·Java & Spring/알고리즘

◇ 알고리즘 정의

- 1차원 배열에서 각 다른 원소를 가르키는 2개의 포인터를 조작해가면서 원하는 값을 탐색하는 알고리즘이다.

◇ 알고리즘 동장방식

◇ 알고리즘 구현

import java.util.*;

public class Main {
    public static void main(String[] args) {
        int[] nums = {0, -5, -2, 4, 6, 9, -1};
        int target = 5;
        int count = 0;

        Arrays.sort(nums);

        for (int i = 0; i < nums.length - 2; i++) {
            int l = i + 1;
            int r = nums.length - 1;

            while (l < r) {
                int sum = nums[i] + nums[l] + nums[r];
                if (sum < target) {
                    l++;
                } else if (sum > target) {
                    r--;
                } else {
                    count++;
                    l++;
                    r--;
                }
            }
        }
        System.out.println(count);
    }
}

◇ 알고리즘 사용처

일반적으로 배열을 순회하며 연산을 할 때 투포인터 알고리즘을 사용하게 되면
(On^i)의 시간복잡도를 (On^(i-1))로 줄일 수 있다.





'Java & Spring > 알고리즘' 카테고리의 다른 글

다익스트라(Dijkstra) - 최단경로 찾기  (0) 2025.03.24
그래프탐색 - DFS와 BFS  (0) 2024.12.23
에라토스테네스의 체(소수, 약수 구하기)  (0) 2024.07.26
유클리드 호제법(최대공약수 구하기)  (0) 2024.07.18
'Java & Spring/알고리즘' 카테고리의 다른 글
  • 다익스트라(Dijkstra) - 최단경로 찾기
  • 그래프탐색 - DFS와 BFS
  • 에라토스테네스의 체(소수, 약수 구하기)
  • 유클리드 호제법(최대공약수 구하기)
DJ.Kang
DJ.Kang
백엔드 개발 기록 블로그
  • DJ.Kang
    DJ Hello World
    DJ.Kang
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 이론공부 N
        • 자격증 N
        • 개념
      • 시스템설계
      • Java & Spring
        • TIL
        • 트러블슈팅
        • 고도화
        • 알고리즘
        • 코딩테스트
        • Java
        • Spring
        • Thymeleaf
      • 프로젝트
        • coin-trading
        • 트러블슈팅
      • Docker
      • DB
      • AWS
      • CI-CD
      • 웹
      • git & github
      • 구인공고분석
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    java 에라토스테네스의 체
    java enhance switch
    데이터 크기
    java 메서드
    java기초
    java 멤버
    개발로드맵
    프로그래머스 java 기초트레이닝
    java two-pointer
    프로그래머스 java 기초 트레이닝
    java 유클리드 호제법
    java arrays.copyofrnage()
    자료구조
    java
    Java 생성자
    java 세수의합
    java super
    데이터 타입
    java 제어자
    Java this
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
DJ.Kang
투 포인터(Two Pointer) 알고리즘(세 수의 합 구하기)
상단으로

티스토리툴바