ALGORITHM

[JAVA] 백준 15656번- N과 M(7)

연듀 2022. 9. 1. 10:32

https://www.acmicpc.net/problem/15656

 

15656번: N과 M (7)

N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열

www.acmicpc.net

 

 

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

public class Main {
    public static int n, m;
    public static int[] arr;
    public static int[] nums;
    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());
        m = Integer.parseInt(st.nextToken());

        arr = new int[m];
        nums = new int[n];

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

        dfs(0);
        System.out.println(sb);
    }

    public static void dfs(int cnt) {
        if (cnt == m) {
            for (int val : arr) {
                sb.append(val).append(" ");
            }
            sb.append("\n");
            return;
        }
        for (int i = 0; i < n; i++) {
            arr[cnt] = nums[i];
            dfs(cnt + 1);
        }
    }
}

 

 

같은 수를 여러번 골라도 되므로 방문처리를 해주지 않아도 된다.

 

 

'ALGORITHM' 카테고리의 다른 글

[JAVA] 백준 15663번- N과 M(9)  (0) 2022.09.02
[JAVA] 백준 15656번- N과 M(8)  (0) 2022.09.01
[JAVA] 백준 15655번- N과 M(6)  (0) 2022.09.01
[JAVA] 백준 15654번- N과 M(5)  (0) 2022.09.01
[JAVA] 백준 9020번- 골든바흐의 추측  (0) 2022.08.30