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 |