내가 생각했을때 문제에서 원하는부분
첫째 줄에 집합 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();
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.