알고리즘/백준

15654_n과 m (5)

베리영young 2024. 5. 28. 14:13

사용 알고리즘: 백트래킹

사용 언어: java

 

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

public class Main_bj_15654_n과m5 {
    static int n, m;
    static int[] numbers;

    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());
        m = Integer.parseInt(st.nextToken());

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

        boolean[] visited = new boolean[n];
        int[] ans = new int[m];
        nAndM5(0, visited, ans); //출력할 배열 크기, 현재 인덱스
    }

    private static void nAndM5(int size, boolean[] visited, int[] ans) {
        if (size >= m) {
            for (int answer : ans) {
                System.out.print(answer + " ");
            }
            System.out.println();
            return;
        }

        for (int i = 0; i < n; i++) {
            if(!visited[i]) {
                visited[i] = true;
                ans[size] = numbers[i];
                nAndM5(size + 1, visited, ans);
                visited[i] = false;
                ans[size] = 0;
            }
        }
    }
}

 

 

진짜 오랜만에 풀어보는 n과m...

순서 맞춰서 출력해야 해서 ans라는 배열을 따로 만들어서 출력해야 한다.

'알고리즘 > 백준' 카테고리의 다른 글

7562_나이트의 이동  (0) 2024.06.10
1039_교환  (0) 2024.06.05
6593_상범 빌딩  (0) 2024.05.27
9095_1, 2, 3 더하기  (0) 2024.05.24
2660_회장 뽑기  (0) 2024.05.23