(cpp) Baekjoon 3273번 문제 ‘두 수의 합’ - 정렬, 투 포인터

Baekjoon 3273번 문제 ‘두 수의 합’ - 정렬, 투 포인터


문제

풀이

image
image
image

#코드

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int n, x,a;
vector<int> alist;

int main() {
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> a;
		alist.push_back(a);
	}
	cin >> x;
	sort(alist.begin(), alist.end());

	int l = 0;
	int r = n-1;
	int cnt = 0;

	while (l < r) {
		if (alist[l] + alist[r] == x) {
			cnt = cnt + 1;
			l++;
			r--;
		}
		else if (alist[l] + alist[r] < x) {
			l++;
		}
		else if (alist[l] + alist[r] > x) {
			r--;
		}
	}
	cout << cnt;

}