https://www.acmicpc.net/problem/18429
18429번: 근손실
웨이트 트레이닝을 좋아하는 어떤 대학원생은, 현재 3대 운동 중량 500의 괴력을 소유하고 있다. 다만, 하루가 지날 때마다 중량이 K만큼 감소한다. 예를 들어 K=4일 때, 3일이 지나면 중량이 488로
www.acmicpc.net
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int n, k, answer;
static int[] arr;
static boolean[] visit;
//static int[] ansArr;
// public static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
k = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
arr = new int[n];
// ansArr = new int[n];
for(int i=0; i<n; i++){
arr[i]=Integer.parseInt(st.nextToken());
}
visit=new boolean[n];
answer=0;
dfs(500, 0);
System.out.println(answer);
// System.out.println(sb);
}
public static void dfs(int sum, int cnt){
if(cnt == n){
answer++;
// for(int val:ansArr) sb.append(val).append(" ");
// sb.append("\n");
return;
}
for(int i=0; i<n; i++){
if(!visit[i] && sum+arr[i]-k >= 500) {
visit[i]=true;
// ansArr[cnt]=i+1;
dfs(sum+arr[i]-k, cnt+1);
visit[i]=false;
}
}
}
}
'ALGORITHM' 카테고리의 다른 글
[JAVA] 백준 1978번- 소수 찾기 (0) | 2022.08.28 |
---|---|
[JAVA] 백준 14888번- 연산자 끼워넣기 (0) | 2022.08.28 |
[JAVA] 백준 15652번- N과 M(4) (0) | 2022.08.27 |
[JAVA] 백준 10250번- ACM 호텔 (0) | 2022.08.24 |
[JAVA] 백준 2839번- 설탕 배달 (0) | 2022.08.24 |