이분 검색으로 쉽게 해결 할 수 있는 문제였다. 오랜만에 이분 검색 문제를 보니 바로 이분 검색을 생각하지 못해 양쪽 포인터로 무식하게 계산하여 메모리나 시간초과는 나지 않아도 정답을 구하지 못했는데 문제 풀이 힌트를 보고 이분 검색을 통해 해결 하였다.
#include <iostream>
#include <algorithm>
using namespace std;
int n;
int solution[100001];
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n;
for (int i = 0; i < n; i++) {
cin >> solution[i];
}
int result = 100000000;
int startP = 0;
int endP = n;
int startRe;
int endRe;
while (startP < endP) {
int now = solution[startP] + solution[endP];
if (result > abs(now)) {
result = abs(now);
startRe = solution[startP];
endRe = solution[endP];
}
if (now > 0) endP--;
else startP++;
}
cout << startRe << " " << endRe << "\n";
return 0;
}
#include <iostream>
#include <algorithm>
using namespace std;
int n;
int solution[100001];
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> solution[i];
}
int result = 2000000001;
int startP = 1;
int endP = n;
int startRe, endRe;
while (startP < endP) {
int now = solution[startP] + solution[endP];
int num = abs(now);
if (result >= num) {
result = num;
startRe = solution[startP];
endRe = solution[endP];
}
if (now > 0) endP--;
else startP++;
}
cout << startRe << " " << endRe << "\n";
return 0;
}