본문 바로가기
알고리즘 문제 풀이

[백준] N과 M

by pinok1o 2021. 4. 16.

www.acmicpc.net/problem/10974www.acmicpc.net/problem/15649

문제 해석

n과 M이 입력되었을때
n까지의 수 중에서 M개를 골라 만들 수 있는 수열을 출력하라

문제 풀이

이전 문제의 백트레킹 방법을 그대로 사용하되
깊이에 해당하는 조건을 추가하면 된다

 


import java.util.*;

public class Main {

    static int[] checked;
    static int N, D;
    static ArrayList<Integer> list;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        N = sc.nextInt();
        D = sc.nextInt();
        checked = new int[N + 1];
        list = new ArrayList<Integer>();

        dfs(0);

    }

    public static void dfs(int d){

        if(list.size() == D){
            for(Integer i : list){
                System.out.print(i + " ");
            }System.out.println();
        }

        for(int i = 1 ; i <= N; i++){
            if(checked[i] != 1) {
                checked[i] = 1;
                list.add(i);
                dfs(d + 1);
                checked[i] = 0;
                list.remove(list.size() - 1);
            }
        }
    }
}

'알고리즘 문제 풀이' 카테고리의 다른 글

[백준] DFS와 DFS  (0) 2021.04.22
[백준] N과 M(2)  (0) 2021.04.22
[백준] 모든 순열  (0) 2021.04.16
[프로그래머스] 2 x n 타일  (0) 2021.04.15
[프로그래머스] 섬 연결하기  (0) 2021.04.12

댓글