2230 - 수 고르기

2025. 2. 17. 16:43PS/백준

문제

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

느낀점

투포인터 응용 문제 였는데, 인덱스를 잘못 산정해서 반례를 찾는데 어려움이 있었다. 항상 left, right 인덱스와 엣지 케이스를 잘 생각해보자

풀이

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

using namespace std;

int main()
{
    int N;
    long long M;
    cin >> N >> M;
    vector<long long> arr(N);
    for (int i = 0; i < N; i++)
    {
        cin >> arr[i];
    }
    sort(arr.begin(), arr.end());
    int left = 0;
    vector<long long> answer;
    for (int right = 0; right < N; right++)
    {
        long long diff = arr[right] - arr[left];
        if (diff < M)
        {
            continue;
        }
        else
        {
            answer.push_back(diff);
            while (true)
            {
                long long diff = arr[right] - arr[left];
                if (left >= N)
                {
                    break;
                }

                if (diff < M)
                {
                    break;
                }
                else
                {
                    left++;
                    answer.push_back(diff);
                }
            }
        }
    }

    sort(answer.begin(), answer.end());
    cout << answer[0];

    return 0;
}

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

3649 - 로봇 프로젝트  (1) 2025.02.18
2467 - 용액  (0) 2025.02.18
2118 - 두 개의 탑  (0) 2025.02.17
1484 - 다이어트  (0) 2025.02.17
25916 - 싫은데요  (0) 2025.02.17