z BOJ 2473. 세 용액 :: C++, 그래픽 기술 블로그

BOJ 2473. 세 용액

랭크 : 골드3

문제 풀이

배열을 정리하고, for문으로 첫번쨰 인자를 정하고, 뒤에는 투포인터로 앞뒤로 좁히면서 적절한 값을 찾습니다.

#include <bits/stdc++.h>
#define fastio cin.tie(0)->sync_with_stdio(0)

using namespace std;

long long N, ans1, ans2, ans3;
long long ans0 = __LONG_LONG_MAX__;

long long abss(long long num) {
    if (num < 0) return -num;
    else return num;
}

int main() {
    fastio;
    cin >> N;
    vector<long long> arr(N, 0);
    for (int i=0; i < N; i++) {
        cin >> arr[i];
    }
    sort(arr.begin(), arr.end());
    for (int i=0; i < N-2; i++) {
        int start = i + 1;
        int end = N - 1;
        while (start != end) {
            long long sums = arr[i] + arr[start] + arr[end];
            if (abss(sums) < ans0) {
                ans1 = arr[i]; ans2 = arr[start]; ans3 = arr[end];
                ans0 = abss(sums);
            }
            if (sums >= 0) end--;
            else start++;
        }
    }
    cout << ans1 << " " << ans2 << " " << ans3 << endl;
}

알고리즘 시간복잡도 공간복잡도
two pointer O(N ^ 2) O(N)



'알고리즘 > 백준' 카테고리의 다른 글

BOJ 9466. 텀 프로젝트  (0) 2022.07.10
BOJ 1208. 부분수열의 합  (0) 2022.07.10
BOJ 1005. ACM Craft  (0) 2022.07.08
BOJ 1806. 부분합  (0) 2022.07.07
BOJ 9527. 1의 개수 세기  (0) 2022.07.07

+ Recent posts