๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 16938_์บ ํ”„ ์ค€๋น„

๋ฟŒ์•ผ._. 2024. 3. 15. 10:51

Gold V

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/16938)

< ์บ ํ”„ ์ค€๋น„ >

 

๋ฌธ์ œ ํ’€์ด 

 

๋ฌธ์ œ๋ฅผ ๊ณจ๋ž์„ ๋•Œ์™€ ๊ณ ๋ฅด์ง€ ์•Š์•˜์„ ๋•Œ ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ๊ตฌํ•œ๋‹ค.

 

 my solution (Java)

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

public class _16938_ { // ์บ ํ”„ ์ค€๋น„
	static int arr[], n, l, r, x, result;

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(bf.readLine());

		n = Integer.parseInt(st.nextToken());
		l = Integer.parseInt(st.nextToken());
		r = Integer.parseInt(st.nextToken());
		x = Integer.parseInt(st.nextToken());

		arr = new int[n];
		result = 0;

		st = new StringTokenizer(bf.readLine());
		for (int i = 0; i < n; i++) {
			arr[i] = Integer.parseInt(st.nextToken());
		}
		Arrays.sort(arr);

		search(0, 0, arr[n-1], -1);

		System.out.println(result);
	}

	private static void search(int sum, int idx, int min, int max) {
		if (idx == n || sum > r) {
			if (sum >= l && sum <= r && max - min >= x) {
				result += 1;
			}
			return;
		}

		search(sum + arr[idx], idx + 1, Math.min(min, arr[idx]), Math.max(max, arr[idx]));
		search(sum, idx + 1, min, max);
	}
}
๋ณ€์ˆ˜)
n, l, r, x : ๋ฌธ์ œ ์ˆ˜, ๋‚œ์ด๋„์˜ ํ•ฉ ์กฐ๊ฑด, ๋‚œ์ด๋„ ์ฐจ ์กฐ๊ฑด
arr : ๋ฌธ์ œ ๋‚œ์ด๋„
result : ๋ฌธ์ œ๋ฅผ ๊ณ ๋ฅด๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜

 

๋ฌธ์ œ ์ˆ˜์™€ ๋ฌธ์ œ ๋‚œ์ด๋„์˜ ํ•ฉ ์กฐ๊ฑด, ๋‚œ์ด๋„ ์ฐจ ์กฐ๊ฑด์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ๋ฌธ์ œ ์ˆ˜๋งŒํผ ๋ฌธ์ œ ๋‚œ์ด๋„๋ฅผ ์ž…๋ ฅ๋ฐ›์€ ํ›„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค. search ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์บ ํ”„์— ์‚ฌ์šฉํ•  ๋ฌธ์ œ๋ฅผ ๊ณ ๋ฅด๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ๊ตฌํ•ด ์ถœ๋ ฅํ•œ๋‹ค.

 

search ( ๋ฌธ์ œ ๋‚œ์ด๋„ ํ•ฉ, ์ธ๋ฑ์Šค, ๊ฐ€์žฅ ์‰ฌ์šด ๋ฌธ์ œ์˜ ๋‚œ์ด๋„, ๊ฐ€์žฅ ์–ด๋ ค์šด ๋ฌธ์ œ์˜ ๋‚œ์ด๋„)

๋ฌธ์ œ๋ฅผ ๋‹ค ๊ณจ๋ž๊ณ  ๋ฌธ์ œ ๋‚œ์ด๋„์˜ ํ•ฉ์ด l์ด์ƒ r์ดํ•˜์ด๋ฉฐ ๋‚œ์ด๋„์˜ ์ฐจ๊ฐ€ x์ด์ƒ์ด๋ผ๋ฉด result +1 ํ›„ return, ๋ฌธ์ œ ๋‚œ์ด๋„ ํ•ฉ์ด r๋ณด๋‹ค ํฌ๋‹ค๋ฉด ๋‹ค์Œ ๊ณ„์‚ฐ์„ ํ•  ํ•„์š” ์—†์œผ๋ฏ€๋กœ return ํ•œ๋‹ค.

๋ฌธ์ œ๋ฅผ ํฌํ•จ์‹œ์ผฐ์„ ๊ฒฝ์šฐ์™€ ๋ฌธ์ œ๋ฅผ ํฌํ•จ์‹œํ‚ค์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ ๊ฐ๊ฐ ๊ณ„์‚ฐ์„ ์œ„ํ•ด search ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.