BOJ_1059_좋은구간_JAVA
문제 : 좋은구간
링크 : BOJ_1059_좋은구간
접근 방식
특정 수를 포함하는 구간의 개수를 찾아 출력하는 문제이다.
주어진 숫자를 기준으로 A < x < B 의 구간을 모두 만들어보고 그 중 n을 포함하는 지 여부를 체크하여 카운팅하면 간단히 풀리는 문제였다.
소스 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class BOJ_1059_좋은구간 {
static int[] numbers;
static int N, answer;
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int L = Integer.parseInt(in.readLine());
StringTokenizer st = new StringTokenizer(in.readLine());
int[] arr = new int[L];
for (int i = 0; i < L; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
N = Integer.parseInt(in.readLine());
int start = 0;
int end = 0;
for (int i = 0; i < L; i++) {
if (arr[i] > N) {
end = arr[i]-1;
if (i == 0) {
start = 1;
} else {
start = arr[i - 1]+1;
}
break;
}
}
int term = 0;
numbers = new int[2];
comb(start, end, 0);
System.out.println(answer);
}
static void comb(int start,int end, int cnt) {
if(cnt == 2) {
if(numbers[0] < numbers[1]) {
if(N >= numbers[0] && N <= numbers[1]) {
answer++;
}
}
return;
}
for(int i=start;i<=end;i++) {
numbers[cnt] = i;
comb(i,end,cnt+1);
}
}
}