이번 문제는 투 포인터 알고리즘을 활용해 푸는 문제였다.
투 포인터 알고리즘
#include <iostream>
#include <algorithm>
#include <vector>
#define MAX 100001
using namespace std;
int n;
int a;
vector<int> arr;
int target;
int cnt=0;
void Input(){
cin>>n;
for(int i=0; i<n; i++){
cin>>a;
arr.push_back(a);
}
cin>>target;
}
void Solution(){
int start=0;
int end=n-1;
sort(arr.begin(), arr.end());
while(start<end){
if(arr[start]+arr[end]==target){
cnt++;
end--;
}
else if(arr[start]+arr[end]>target){
end--;
}
else{
start++;
}
}
cout<<cnt<<endl;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
Input();
Solution();
return 0;
}