[BOJ 1059] 좋은 구간

Leehyemin·2023년 3월 12일
0

알고리즘_백준

목록 보기
2/7
#include <iostream>
#include <algorithm>
using namespace std;
// 1059 좋은구간
// Created by polcomicepute

int main(){
    int S[50];
    int L=0, n=0;
    int prev=0, next=0, res=0, A=0, B=0;

    cin >> L; // 1<= L <=50
    for(int i=0; i<L; i++){
        scanf("%d", &S[i]); 
    }
    cin >> n; // 1<= n <= maxS

    // 1. 정렬
    sort(S, S+L);


    // 2. -1, +1 찾기
    for(int i=0; i<L; i++){
        if (S[i] > n){
            if (i ==0){ 
                // S의 최소가 n보다 큰 경우, 좋은구간이 가능한 범위: [1, S의최소-1] 
                // -> 이걸 생각못해서 겁나 틀림 ㅜㅜㅜ A, B둘다 양의정수 일뿐
                next = S[i];
                A=1;
            }
            else{
                next = S[i];
                prev = S[i-1];
                A=prev+1;
            }
            break;
        }
        else if (S[i]==n){
            cout << 0 << endl;
            return 0;
        }
    }
    // 3. 개수 구하기
    B = next;
    while (A <= n){
        for(int p =A; p<B; p++){
            if ((p<n) || ((p==A)&&(A==n))){ 
                // 끝이 n보다 작으면, n 포함못하니까 pass
                // start와 n이 같으면, [n,n]이니까 p==n 일때 제외해야함
                continue;}
            else{
                // cout<< "[" << A << "," << p << "]"<< endl;
                res++;
            }
        }
        A ++;
    }


    cout << res << endl;


    return 0;
}

0개의 댓글