본문 바로가기
🧑‍💻코딩 테스트/백준 (BOJ)

[코딩테스트/백준 알고리즘] 15649번 : N과 M(1) (자바, Java 풀이)

by 코코의 주인 2022. 9. 15.

문제

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

 

15649번: N과 M (1)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net


문제 설명


문제 풀이

 재귀를 이용한 브루트포스 문제다.


코드

import java.util.*;

class Main {
    static boolean[] num = new boolean[9];
    static int[] candi = new int[9];
    static StringBuilder sb = new StringBuilder();

    static void func(int i, int N, int M) {
        if(i == M) {
            for(int j = 0; j < M; j++) {
                sb.append(candi[j]);
                if(j != M - 1)
                    sb.append(" ");
            }
            sb.append("\n");
            return;
        }
        for(int j = 1; j <= N; j++) {
            if(!num[j]) {
                num[j] = true;
                candi[i] = j;
                func(i + 1, N, M);
                num[j] = false;
            }
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int M = sc.nextInt();
        func(0, N, M);
        System.out.println(sb.toString());
    }
}

댓글