๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/18429)
< ๊ทผ์์ค >
๋ฌธ์ ํ์ด
์กฐํฉ์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ํ์ธํ๋ค. ํ์ธํ๋ฉด์ 500 ๋ฏธ๋ง์ด ๋๋ ๊ฒฝ์ฐ ๋ค์ ์กฐํฉ์ ํ์ธํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class _18429_ { // ๊ทผ์์ค
static int arr[], answer;
static boolean visited[];
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
arr = new int[n];
visited = new boolean[n];
answer = 0;
st = new StringTokenizer(bf.readLine());
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
search(0, n, k, 500);
System.out.println(answer);
}
private static void search(int idx, int n, int k, int w) {
if (idx == n) {
answer += 1;
return;
}
for (int i = 0; i < n; i++) {
if (!visited[i]) {
if (w + arr[i] - k < 500) {
continue;
}
visited[i] = true;
search(idx + 1, n, k, w + arr[i] - k);
visited[i] = false;
}
}
}
}
๋ณ์)
n, k : ์ด๋ ํคํธ ์, ๊ฐ์ํ๋ ์ค๋
arr : ์ด๋ ํคํธ ์ค๋ ์ฆ๊ฐ๋
visited : ์กฐํฉ์์ ์ฌ์ฉํ ๋ฐฉ๋ฌธ ์ฌ๋ถ
answer : ํญ์ ์ค๋์ด 500 ์ด์์ด ๋๋๋ก ํ๋ ๊ฒฝ์ฐ์ ์
์ด๋ ํคํธ ์ค๋ ์ฆ๊ฐ๋์ n์ผ ๋์ ์ด๋ค ์์๋ก ์ ์ฉํ ์ง ์กฐํฉ์ ์ฌ์ฉํ๋ค. ์กฐํฉ์ ์ฌ์ฉํ์ฌ ์ด๋ ์๊ฐ ์ค๋์ด 500๋ณด๋ค ์์์ง๋ฉด ์ ๋ต์ด ๋ ์ ์์ผ๋ฏ๋ก ๋ค์ ์กฐํฉ์ ํ์ธํ๋ค. n์ผ ๋์ ํญ์ 500 ์ด์์ ์ ์งํ๋ค๋ฉด answer +1์ ํด์ค๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 2872_์ฐ๋ฆฌ์ง์ ๋์๊ด์ด ์์ด (1) | 2023.11.23 |
---|---|
[Baekjoon] 5212_์ง๊ตฌ ์จ๋ํ (1) | 2023.11.22 |
[Baekjoon] 1448_์ผ๊ฐํ ๋ง๋ค๊ธฐ (1) | 2023.11.20 |
[Baekjoon] 13305_์ฃผ์ ์ (0) | 2023.11.17 |
[Baekjoon] 6550_๋ถ๋ถ ๋ฌธ์์ด (0) | 2023.11.16 |