문제 출처 :
두 수의 합 백준
문제 접근
1. 해당 수열을 정렬하여 작은 수와 큰수를 더하면서 비교하기 위함
2. 왼쪽과 오른쪽으로 시작하는 값들을 더한 값을 위주로 구해야될 값이면 결과++하고 크면 오른쪽을 더 작은 값으로 옮겨주고 작으면 왼쪽을 더 큰 값으로 옮겨주며 더한 값을 확인
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//수열의 크기
int n = sc.nextInt();
int []arr = new int[n];
//수열 정보
for(int i =0; i < n;i++)
{
arr[i] = sc.nextInt();
}
//두 수의 합이 되어야할 값
int k = sc.nextInt();
//오름차순 정렬
Arrays.sort(arr);
int left = 0;
int right = n-1;
int ans = 0;
while(left < right)
{
int sum = arr[left] + arr[right];
if( sum == k)
{
ans++;
left++;
right--;
}
else if (sum > k)
{
right--;
}else{
left++;
}
}
System.out.println(ans);
sc.close();;
}
}