수열에 있는 숫자를 더해서 x가 나오는 경우의 수를 찾는 문제입니다!
a+b=x
라면 a=x-b
가 되겠죠!
set을 사용해서 x-b
값이 존재하면 count를 증가시켜줍니다.
단 (a,b)
와 (b,a)
가 모두 count를 증가시키기 때문에 답은 나누기 2를 해주어야 합니다!
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)));
int n = Integer.parseInt(br.readLine());
int[] arr = new int[n];
HashSet<Integer> set = new HashSet<>();
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0; i<n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
set.add(arr[i]);
}
int count = 0;
int x = Integer.parseInt(br.readLine());
for(int i=0; i<n; i++) {
if(set.contains(x-arr[i])) count++;
}
System.out.println(count/2);
}
}