알고리즘/BOJ

백준 2470번 두 용액

꾸준함. 2018. 7. 8. 19:40

문제 링크입니다: 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