본문 바로가기

백준/실버

[백준 1059번] 좋은 구간 (C++)

문제링크 : https://www.acmicpc.net/problem/1059

 

1059번: 좋은 구간

[9, 10], [9, 11], [9, 12], [10, 11], [10, 12]

www.acmicpc.net

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = INT_MAX;

int L, n, arr[51];
int s, e, cnt;

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

    cin >> L;
    for(int i=0; i<L; i++) cin >> arr[i];
    cin >> n;

    sort(arr, arr+L);

    for(int i=0; i<L; i++)
    {
        if (n < arr[i])
        {
            s = arr[i-1] + 1; //시작점
            e = arr[i] - 1; //끝점
            break;
        }
    }

    for(int i=s; i<=n; i++) //범위 내 갯수 카운팅
    {
        for(int j=n; j<=e; j++)
        {
            if(i==j) continue;
            cnt++;
        }
    }
    cout << cnt;

    return 0;
}

 

입력받은 배열을 정렬해준 후, n이 현재 배열 값보다 작은 때를 기준으로 시작점과 끝점을 찾아준다.

해당 시작점과 끝점을 이용하여 범위 내 가능한 갯수를 카운팅해주고 이를 출력해준다.

5
4 8 13 24 30
10

10 < 13
s = 8+1, e = 13-1

9 ->  10, 11, 12
10 -> 11, 12