※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 14921번 문제인 용액 합성하기이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/14921 

 

14921번: 용액 합성하기

홍익대 화학연구소는 다양한 용액을 보유하고 있다.  각 용액은 -100,000,000부터 100,000,000사이의 특성 값을 갖는데, 같은 양의 두 용액을 혼합하면, 그 특성값은 두 용액의 특성값의 합이 된다. 당

www.acmicpc.net

두 수의 합이 0에 가장 가까운 두 수의 쌍을 찾는 문제는 대표적인 투포인터 예제이다.

 

주어진 배열을 먼저 정렬하고, 투포인터를 이용해 문제를 해결하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <algorithm>
using namespace std;

int arr[100000];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int N; cin >> N;
	for (int i = 0; i < N; i++) cin >> arr[i];

	sort(arr, arr + N);
	int ans = 1000000007;
	int L = 0, R = N - 1;
	while (L < R) {
		int tmp = arr[L] + arr[R];
		if (abs(tmp) < abs(ans)) ans = tmp;
		if (tmp < 0) L++;
		else R--;
	}

	cout << ans;
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 14923 // C++] 미로 탈출  (0) 2022.04.24
[BOJ 14920 // C++] 3n+1 수열  (0) 2022.04.24
[BOJ 14922 // C++] 부분평균  (0) 2022.04.24
[BOJ 14939 // C++] 불 끄기  (0) 2022.04.23
[BOJ 24552 // C++] 올바른 괄호  (0) 2022.04.22

+ Recent posts