9024 - 두 수의 합
2025. 2. 18. 14:38ㆍPS/백준
문제
https://www.acmicpc.net/problem/9024
느낀점
투 포인터 알고리즘 자체는 어렵지 않았지만, 많은 수의 입력이 들어올 때, 동기화 해주어야했다. 이런 부분이 백준 문제가 짜증나는 듯..
풀이
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int t;
cin >> t;
std::ios::sync_with_stdio(false);
for (int i = 0; i < t; i++)
{
int n, K;
cin >> n >> K;
vector<int> arr(n);
for (int k = 0; k < n; k++)
{
cin >> arr[k];
}
sort(arr.begin(), arr.end());
int left = 0, right = n - 1;
int minValue = 2 * 10e7;
vector<int> answerList;
while (left < right)
{
int diff = arr[left] + arr[right] - K;
if (diff == 0)
{
left++;
right--;
}
else if (diff > 0)
{
right--;
}
else
{
left++;
}
minValue = min(minValue, abs(diff));
answerList.push_back(abs(diff));
}
int cnt = 0;
for (size_t j = 0; j < answerList.size(); j++)
{
if (answerList[j] == minValue)
{
cnt++;
}
}
cout << cnt << "\n";
}
return 0;
}
'PS > 백준' 카테고리의 다른 글
17609 - 회문 (0) | 2025.02.18 |
---|---|
14921 - 용액 합성하기 (0) | 2025.02.18 |
19583 - 싸이버개강총회 (0) | 2025.02.18 |
3649 - 로봇 프로젝트 (1) | 2025.02.18 |
2467 - 용액 (0) | 2025.02.18 |