Notice
Recent Posts
Link
정화 코딩
[C++] 용액 (백준 2467번) 본문
https://www.acmicpc.net/problem/2467
#include <iostream>
#include <vector>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin >> n;
vector<int> a(n);
for (int i = 0; i < n; i++) cin >> a[i];
int l = 0;
int r = n - 1;
int dif = 2000000000;
int la = 0;
int ra = 0;
while (l < r) {
if (abs(a[r] + a[l]) < dif) {
dif = abs(a[r] + a[l]);
la = l;
ra = r;
}
if (a[r] + a[l] > 0) r--;
else l++;
}
cout << a[la] << ' ' << a[ra] << '\n';
}
간단한 투 포인터 문제. 포인터 하나는 왼쪽 끝을, 하나는 오른쪽 끝을 가리키는 상태에서 시작한다. 두 용액의 합이 음수면 왼쪽 포인터를 한 칸 오른쪽으로 이동시키고, 양수면 오른쪽 포인터를 한 칸 왼쪽으로 이동시키며 두 용액 합의 절댓값의 최솟값을 찾았다. (AC)
'PS' 카테고리의 다른 글
[C++] 도시 분할 계획 (백준 1647번) (0) | 2024.10.07 |
---|---|
[C++] 간판 (백준 5534번) (0) | 2024.10.07 |
[C++] 구슬 탈출 2 (백준 13460번) (0) | 2024.09.19 |
[C++] 이번학기 평점은 몇점? (0) | 2024.09.16 |
[C++] 부분합 (백준 1806번) (0) | 2024.09.15 |
Comments