하루 1문제 챌린지/Silver3

백준 3273번 두 수의 합(C++)

그린푸딩 2024. 3. 2. 00:24
728x90
반응형

투포인터 문제

#include<vector>
#include <iostream>
#include<algorithm>

using namespace std;

int main()
{

   int n,x;
   cin>>n;
   
   vector<int>arr;
   int t;
   for(int i=0;i<n;i++){
       cin>>t;
       arr.push_back(t);
   }
   
   cin>>x;
   
   sort(arr.begin(),arr.end());

   int cnt=0;
   int left=0;
   int right=n-1;
   
   if(n==1 && arr[0]!=x){
       cout<<0;
       return 0;
   }
   
   while(left<right){
      
       if((arr[left]+arr[right])==x){
           cnt++;
           left++;
       }else if((arr[left]+arr[right])<x){
           left++;
       }
       else{
           right--; 
       }
       
   }
   cout<<cnt;
   
   
    return 0;
}
728x90
반응형