백준
백준 3273 두 수의 합(Java)
Park DJ
2023. 2. 3. 01:30
https://www.acmicpc.net/problem/3273
3273번: 두 수의 합
n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는
www.acmicpc.net
해석 및 팁
이 문제는 투포인터를 사용하는 문제입니다. left를 0 right를 n-1로 해서 양끝에서 비교하면 됩니다.
Java 코드
import java.util.Scanner;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int count = 0;
int l = 0;
int r = n - 1;
int[] arr = new int[n];
for(int i = 0; i < n; i++) arr[i] = sc.nextInt();
int x = sc.nextInt();
Arrays.sort(arr);
while(l < r) {
int sum = arr[l] + arr[r];
if(sum == x) {
count++;
l++;
}
if(sum < x) l++;
else if(sum > x) r--;
}
System.out.println(count);
}
}