18114 - 블랙 프라이데이

2025. 2. 19. 10:53PS/백준

문제

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

느낀점

응용 투 포인터 문제, 딱 맞는 값을 찾는다는 의미에서 이분탐색으로도 생각 가능!, 정렬해야된다는 것을 빼먹어서 반례 찾는데 어려웠음

풀이

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    int N, C;
    cin >> N >> C;
    vector<int> arr(N);
    for (int i = 0; i < N; i++)
    {
        cin >> arr[i];
    }
    sort(arr.begin(), arr.end());
    if (N == 1)
    {
        if (arr[0] == C)
        {
            cout << 1;
            return 0;
        }
        else
        {
            cout << 0;
            return 0;
        }
    }

    int left = 0, right = N - 1;
    while (left < right)
    {
        if (arr[left] == C || arr[right] == C)
        {
            cout << 1;
            return 0;
        }

        int sum = arr[left] + arr[right];
        if (sum == C)
        {
            cout << 1;
            return 0;
        }
        else if (sum > C)
        {
            right--;
        }
        else
        {
            for (int i = left + 1; i < right; i++)
            {
                int temp = sum + arr[i];
                if (temp == C)
                {
                    cout << 1;
                    return 0;
                }
            }
            left++;
        }
    }

    cout << 0;
    return 0;
}

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

1806 - 부분합  (0) 2025.02.23
1253 - 좋다  (0) 2025.02.22
17609 - 회문  (0) 2025.02.18
14921 - 용액 합성하기  (0) 2025.02.18
9024 - 두 수의 합  (0) 2025.02.18