๐Ÿ“– [๋ฐฑ์ค€์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด] Q.15650 N๊ณผM (2) ๋ฌธ์ œ ํ’€์ด - java

๐Ÿ“– ๋ฌธ์ œ

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

์ž์—ฐ์ˆ˜ N๊ณผ M์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์•„๋ž˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ธธ์ด๊ฐ€ M์ธ ์ˆ˜์—ด์„ ๋ชจ๋‘ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

1๋ถ€ํ„ฐ N๊นŒ์ง€ ์ž์—ฐ์ˆ˜ ์ค‘์—์„œ ์ค‘๋ณต ์—†์ด M๊ฐœ๋ฅผ ๊ณ ๋ฅธ ์ˆ˜์—ด

๊ณ ๋ฅธ ์ˆ˜์—ด์€ ์˜ค๋ฆ„์ฐจ์ˆœ์ด์–ด์•ผ ํ•œ๋‹ค.

๐Ÿ” ์ ‘๊ทผ๋ฒ•

Q.15650 N๊ณผM (2) ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ž์—ฐ์ˆ˜ N๊ณผ M์ด ์ฃผ์–ด์กŒ์„ ๋•Œ

1๋ถ€ํ„ฐ N๊นŒ์ง€ ์ž์—ฐ์ˆ˜ ์ค‘์—์„œ ์ค‘๋ณต ์—†์ด M๊ฐœ๋ฅผ ๊ณ ๋ฅธ ์ˆ˜์—ด์„ ๋ชจ๋‘ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ค‘๋ณต์—†์ด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ฆ‰ ์ค‘๋ณต์—†์ด ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด N๊ฐœ์ค‘ M๊ฐœ๋ฅผ ๊ณ ๋ฅด๋Š” ์กฐํ•ฉ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๋ฐฑํŠธ๋ž˜ํ‚น์„ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ป ์ฝ”๋“œ

package problem.brute;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main_15650 {

    static int n,m;
    static boolean[] visited;
    static int[] sequence;

    public static void main(String[] args) throws IOException {
        input();
        go(1, 1);
    }


    public static void input() throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] temp = br.readLine().split(" ");
        n = Integer.parseInt(temp[0]);
        m = Integer.parseInt(temp[1]);
        sequence = new int[m+1];
        visited = new boolean[n+1];
    }

    public static void go(int index, int depth) {
        if(depth == m+1){
            print();
            return;
        }
        for(int i=index; i<=n; i++){
            if(!visited[i]){
                visited[i] = true;
                sequence[depth] = i;
                go(i,depth+1);
                visited[i] = false;
            }
        }
    }

    public static void print(){
        for(int i=1; i<=m; i++){
            System.out.print(sequence[i]+" ");
        }
        System.out.println();
    }
}

Written on March 4, 2021