/ BOJ

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);
		}

	}
}