반응형

투포인터 3

Two Pointers: 백준 수 고르기-2230

문제 유형: Two Pointers수 고르기N개의 정수로 이루어진 수열 A[1], A[2], …, A[N]이 있다. 이 수열에서 두 수를 골랐을 때(같은 수일 수도 있다), 그 차이가 M 이상이면서 제일 작은 경우를 구하는 프로그램을 작성하시오.예를 들어 수열이 {1, 2, 3, 4, 5}라고 하자. 만약 M = 3일 경우, 1 4, 1 5, 2 5를 골랐을 때 그 차이가 M 이상이 된다. 이 중에서 차이가 가장 작은 경우는 1 4나 2 5를 골랐을 때의 3이 된다. 작성 코드import java.util.Arrays;import java.util.Scanner;public class Main { public static int N, M; public static int[] givenNums;..

알고리즘/JAVA 2024.08.09

Two Pointers: 백준 부분합-1806

문제 유형: Two Pointers + Sliding Windows부분합10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오.작성 코드import javax.sound.midi.Sequence;import java.util.Scanner;public class Main { static Scanner sc = new Scanner(System.in); static int N, S; static int[] sequence; static void input() { N = sc.nextInt(); S = sc.nextInt();..

알고리즘/JAVA 2024.08.09

Two Pointers

투포인터는 한가지의 포인터로 배열안의 모든 요소를 비교 하는게 비효율적이거나 배열 안에서 페어단위로 조사를 할 필요성이 있을 때 대표적으로 사용되는 알고리즘이다.  투포인터 알고리즘이 사용 되기 좋은 상황의 경우 아래와 같다.1. 두 배열의 Intersection을 찾을 때2. 두 배열의 용소를 합칠 때3. 두 배열의 차이를 찾을 때즉, 두개의 배열을 사용하는 경우 유용하다. 이런 투포인터의 핵심은 포인터와 포인터가 움직이는 조건에 대한 파악이다.그리고 두개의 포인터이니 조건을 판단하고 어떤 포인터를 움직여야 하는지에 대해 파악이 필요하다. 예를들어 주어진 값과 배열 안에서 주어진 값을 만들 수 있는 하나의 페어를 찾아야 하는경우 배열 가장 앞과 뒤에 두개의 포인터를 두고 합이 값보다 클경우 가장 뒤에있..

알고리즘/이론 2024.08.06
반응형