먼저 배열을 정렬해준다.
배열 원소를 차례대로 방문해서 시작 0 끝 n-1 로 지정해서 투 포인터를 ㅏ사용해서 두 수의 합이 방문한 배열 원소와 같은지 확인해준다.
주의할 점은 l==i, r==i인 경우를 좋다로 체크하면 안된다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int n=Integer.parseInt(br.readLine());
int[] arr=new int[n];
st=new StringTokenizer(br.readLine());
for(int i=0;i<n;i++){
arr[i]=Integer.parseInt(st.nextToken());
}
int ans=0;
Arrays.sort(arr);
for(int i=0;i<n;i++){
int l=0;
int r=n-1;
while(l<r){
long sum=arr[l]+arr[r];
if(sum==arr[i]){
if(l==i)l++;
else if(r==i)r--;
else {
ans++;
break;
}
}
if(sum<arr[i])l++;
else if(sum>arr[i])r--;
}
}
System.out.println(ans);
}
/*
10
1 2 3 4 5 6 7 8 9 10
*/
}
#투포인터