Algorithm/λ°±μ€
λ°±μ€ 18429λ² - κ·Όμμ€
giraffe_
2022. 8. 28. 16:06
https://www.acmicpc.net/problem/18429
18429λ²: κ·Όμμ€
μ¨μ΄νΈ νΈλ μ΄λμ μ’μνλ μ΄λ€ λνμμμ, νμ¬ 3λ μ΄λ μ€λ 500μ κ΄΄λ ₯μ μμ νκ³ μλ€. λ€λ§, νλ£¨κ° μ§λ λλ§λ€ μ€λμ΄ Kλ§νΌ κ°μνλ€. μλ₯Ό λ€μ΄ K=4μΌ λ, 3μΌμ΄ μ§λλ©΄ μ€λμ΄ 488λ‘
www.acmicpc.net
λ§€μΌ μλ‘ λ€λ₯Έ μ΄λ€ ν€νΈλ₯Ό μ¬μ©ν μ§ μ ν΄μΌ νλ―λ‘ μμ΄μ΄λ€.
μμ΄μ λ§λ€μ΄μ κ²°κ³Ό λ°°μ΄μ μ μ₯νκ³ , μμ±μ΄ λμμ λ μ΄λ κΈ°κ°λμ νμ μ€λμ΄ 500μ΄μμΌλ‘ μ μ§κ° λλμ§ νμΈνλ€. μ μ§κ° λλ©΄ μΉ΄μ΄νΈλ₯Ό μ¬λ Έλ€.
μ½λ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int N, K;
static int[] arr;
static boolean[] visited;
static int[] result;
static int count;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
N = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
arr = new int[N];
st = new StringTokenizer(br.readLine(), " ");
for(int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
//ꡬν
visited = new boolean[N];
result = new int[N];
count = 0;
permutation(0); //μμ΄
//μΆλ ₯
System.out.println(count);
}
public static void permutation(int depth) {
if(depth == N) {
//μ΄λ κΈ°κ°λμ νμ μ€λμ΄ 500 μ΄μμ΄ λλλ‘ νλ κ²½μ°μ μ
int muscle = 500;
for(int i = 0; i < N; i++) {
muscle = muscle + result[i] - K;
if(muscle < 500) return; //500λ³΄λ€ μμμ§λ©΄ X
}
count++;
return;
}
for(int i = 0; i < N; i++) {
if(visited[i]) continue;
visited[i] = true;
result[depth] = arr[i];
permutation(depth + 1);
visited[i] = false;
}
}
}
κ²°κ³Ό
