[백준/BOJ] 백준 2470번 : 두 용액
2021. 6. 28. 23:05ㆍ알고리즘 문제풀이
https://www.acmicpc.net/problem/2470
중간에서 만나는 투 포인터를 이용하여 문제를 해결했다.
코드
#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;
int n;
vector<int> ph;
int main()
{
cin.tie(NULL);
ios_base::sync_with_stdio(false);
cin >> n;
for (int i = 0; i < n; i++)
{
int input;
cin >> input;
ph.push_back(input);
}
sort(ph.begin(), ph.end());
//중간에서 만나는 투포인터를 이용한다
int left = 0;
int right = n - 1;
int diff = 2000000001;
int result1 = -1;
int result2 = -1;
while (left < right)
{
//0에 더 가까운 값을 찾았을때
if (abs(ph[left] + ph[right]) < diff)
{
diff = abs(ph[left] + ph[right]);
result1 = ph[left];
result2 = ph[right];
}
//합이 음수일때
if (ph[left] + ph[right] < 0)
left++;
//합이 양수일때
else if (ph[left] + ph[right] > 0)
right--;
//합이 0일때
else
break;
}
cout << result1 << " " << result2 << "\n";
return 0;
}
'알고리즘 문제풀이' 카테고리의 다른 글
[백준/BOJ] 백준 17831번 : 대기업 승범이네 (3) | 2021.06.29 |
---|---|
[백준/BOJ] 백준 2169번 : 로봇 조종하기 (0) | 2021.06.29 |
[백준/BOJ] 백준 2243번 : 사탕상자 (0) | 2021.06.28 |
[백준/BOJ] 백준 16933번 : 벽 부수고 이동하기 3 (0) | 2021.06.28 |
[백준/BOJ] 백준 7812번 : 중앙 트리 (0) | 2021.06.28 |