문제 링크입니다: https://www.acmicpc.net/problem/2470
백준 2473번 세 용액(http://jaimemin.tistory.com/679)과 동일한 방법으로 풀면 되는 문제였습니다.
범위는 늘어났지만 구하는 용액의 수가 두개이니 비교적 더 쉬운 문제라고 할 수 있습니다.
#include <iostream>
#include <algorithm>
#include <climits> //LLONG_MAX
using namespace std;
const int MAX = 100000;
int N, idx1, idx2;
long long minimum;
long long liquid[MAX];
void print2Liquid(void)
{
int i = 0, j = N - 1;
while (i < j)
{
long long sum = liquid[i] + liquid[j];
//최소값 갱신 때마다 idx1~idx2 초기화
if (llabs(sum) < minimum)
{
minimum = llabs(sum);
idx1 = i;
idx2 = j;
}
//오름차순 정렬했으므로
if (sum < 0)
i++;
else
j--;
}
cout << liquid[idx1] << " " << liquid[idx2] << endl;
}
int main(void)
{
cin >> N;
for (int i = 0; i < N; i++)
cin >> liquid[i];
sort(liquid, liquid + N);
minimum = LLONG_MAX;
print2Liquid();
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 2407번 조합 (4) | 2018.07.08 |
---|---|
백준 14921번 용액 합성하기 (0) | 2018.07.08 |
백준 2473번 세 용액 (0) | 2018.07.08 |
백준 2563번 색종이 (2) | 2018.07.08 |
백준 2042번 구간 합 구하기 (0) | 2018.07.08 |