백준 좋은 구간

KIMYEONGJUN·2024년 12월 4일
0
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫째 줄에 집합 S의 크기 L이 주어진다.
둘째 줄에는 집합에 포함된 정수가 주어진다.
셋째 줄에는 n이 주어진다.

첫째 줄에 n을 포함하는 좋은 구간의 개수를 출력한다.

내가 이 문제를 보고 생각해본 부분

BufferedReader를 사용하여 입력을 받는다.
정렬: 집합 S를 정렬하여 이진 탐색을 한다.
구간 계산: 두 개의 중첩된 반복문을 사용하여 가능한 모든 구간 [A, B]를 탐색한다.
여기서 A는 1부터 1000까지, B는 A+1부터 1000까지이다.
조건 확인: 현재 구간에 포함된 값이 집합 S에 존재하지 않는지 확인한 후, n이 구간에 포함되는지 체크한다.
결과 출력: 조건을 만족하는 구간의 개수를 출력한다.

코드로 구현

package baekjoon.baekjoon_24;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

// 백준 1059번 문제
public class Main857 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int L = Integer.parseInt(br.readLine()); // 집합 S의 크기 L 입력
        String[] input = br.readLine().split(" "); // 집합 S에 포함된 정수 입력
        int[] S = new int[L];
        for(int i = 0; i < L; i++) {
            S[i] = Integer.parseInt(input[i]);
        }
        // n 입력
        int n = Integer.parseInt(br.readLine());

        // 집합 S를 정렬
        Arrays.sort(S);
        int count = 0;

        // n을 포함하는 좋은 구간의 개수를 계산
        for(int i = 1; i <= 1000; i++) {
            for(int j = i + 1; j <= 1000; j++) {
                if(i <= n && n <= j) {
                    boolean isGoodInterval = true;
                    for(int s : S) {
                        if(i <= s && s <= j) {
                            isGoodInterval = false;
                            break;
                        }
                    }
                    if(isGoodInterval) {
                        count++;
                    }
                }
            }
        }

        // 결과 출력
        System.out.println(count);
        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글