Contents

๋ฐฑ์ค€ 15649๋ฒˆ, N๊ณผ M (1) (with.Java)

   Aug 4, 2025     2 min read

๋ฐฑ์ค€ 15649๋ฒˆ, N๊ณผ M (1) (with.Java) ์— ๋Œ€ํ•˜์—ฌ ์•Œ์•„๋ณธ ๊ธ€์ž…๋‹ˆ๋‹ค.

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉฐ, ํ’€์—ˆ๋˜ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํšŒ๊ณ ์™€ ๋‹ค๋ฅธ ํ’€์ด ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋ฉฐ, ์•Œ์•„๊ฐ€๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ์— ๋Œ€ํ•ด ๋จผ์ € ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ

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

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

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ž์—ฐ์ˆ˜ N๊ณผ M์ด ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค M โ‰ค N โ‰ค 8)

์ถœ๋ ฅ

ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค.

์ค‘๋ณต๋˜๋Š” ์ˆ˜์—ด์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ถœ๋ ฅํ•˜๋ฉด ์•ˆ๋˜๋ฉฐ, ๊ฐ ์ˆ˜์—ด์€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

์ˆ˜์—ด์€ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

๋ฌธ์ œ ํ’€์ด

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

class Main{
    public static int[] arr;
    public static boolean[] visit;
    public static StringBuilder sb = new StringBuilder();

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        String[] s_arr = br.readLine().split(" ");
        br.close();
        int N = Integer.valueOf(s_arr[0]);
        int M = Integer.valueOf(s_arr[1]);

        arr = new int[M];
        visit = new boolean[N];

        dfs(N, M, 0);

        bw.write(sb.toString());
        bw.flush();
        bw.close();
    }

    public static void dfs(int N, int M, int depth){
        if(depth == M){
            for(int i : arr){
                sb.append(i).append(" ");
            }
            sb.append("\n");
            return;
        }

        for(int i = 0; i < N; i++){
            if(!visit[i]){
                visit[i] = true;
                arr[depth] = i + 1;
                dfs(N, M, depth + 1);
                visit[i] = false;
            }
        }
    }
}

ํ’€์ด ์„ค๋ช…

BufferedReader์™€ BufferedWriter๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ €, ์ž…๋ ฅ๋œ ๊ฐ’์„ ์ฝ์–ด N๊ณผ M์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

arr ๋ฐฐ์—ด์€ ์„ ํƒ๋œ ์ˆ˜๋ฅผ ์ €์žฅํ•˜๊ณ , visit ๋ฐฐ์—ด์€ ํ•ด๋‹น ์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”์ง€๋ฅผ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค.

StringBuilder๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

dfs ํ•จ์ˆ˜๋Š” ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰์„ ํ†ตํ•ด ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ๊ตฌํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ๊นŠ์ด๊ฐ€ M๊ณผ ๊ฐ™์œผ๋ฉด ์„ ํƒ๋œ ์ˆ˜๋ฅผ ์ถœ๋ ฅ ํ˜•์‹์— ๋งž์ถฐ StringBuilder์— ์ €์žฅํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด 1๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ์ˆ˜๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ์•„์ง ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ์ˆ˜๋ฅผ ์„ ํƒํ•ด ๋‹ค์Œ ๊นŠ์ด๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค.

์„ ํƒ์ด ๋๋‚˜๋ฉด ํ•ด๋‹น ์ˆ˜๋ฅผ ๋‹ค์‹œ ๋ฏธ์‚ฌ์šฉ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆฝ๋‹ˆ๋‹ค.

์ด ๊ณผ์ •์ด ๋๋‚˜๋ฉด StringBuilder์— ์ €์žฅ๋œ ๊ฒฐ๊ณผ๋ฅผ BufferedWriter๋ฅผ ์‚ฌ์šฉํ•ด ์ถœ๋ ฅํ•˜๊ณ , ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ  ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.