PS

BOJ 1059 : 좋은 구간

lickelon 2025. 1. 17. 17:01
  • 문제 링크 : boj.kr/1059
  • 난이도 : S4
  • 태그 : 정렬, 브루트포스

코드

#include <bits/stdc++.h>

#define all(x) (x).begin(), (x).end()

#define INF 0x7FFFFFFF

using namespace std;

using ll = long long;
using ld = long double;
using pii = pair<int,int>;
using pll = pair<ll, ll>;

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    int l;
    cin >> l;
    vector<int> arr(l);
    for(auto &e : arr) cin >> e;
    arr.push_back(0);
    arr.push_back(1001);
    sort(all(arr));

    int n;
    cin >> n;
    for(int i = 1; i < l+2; i++) {
        if(arr[i-1] < n && n < arr[i]) {
            int ans = 0;
            for(int s = arr[i-1] + 1; s < arr[i]-1; s++) {
                for(int e = s + 1; e < arr[i]; e++) {
                    if(s <= n && n <= e) ans++;
                }
            }
            cout << ans;
            return 0;
        }
    }
    cout << 0;

    return 0;
}

풀이

집합 S를 정렬하여 원소를 늘어놓으면 원소들로 구간이 여러 개로 나눠지게 된다.

좋은 구간은 이 구간 중 n이 포함된 한 구간 안에만 존재하게 된다.

좋은 구간이 존재할 구간을 찾았으면 브루트포스를 통해 n이 존재할 수 있는 구간을 세면 된다.

728x90