less than 1 minute read


0. 들어가면서

N과 M (01)
백트래킹 문제이다.

1. Java

1.1 내가 푼 코드

package bj.ch12_Backtracking;

import java.io.*;
import java.util.*;

public class BJ_15649_N과M_01_01 {
    static int[] arr;
    static boolean[] visited;
    static int N, M;

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        N = Integer.parseInt(st.nextToken());
        M = Integer.parseInt(st.nextToken());

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

        nPr(0);
    }

    private static void nPr(int count) {
        if (count == M) {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < M; i++) {
                sb.append(arr[i]);
                sb.append(" ");
            }
            sb.substring(0, sb.length() - 1);
            System.out.println(sb.toString());
            return;
        }

        for (int i = 0; i < N; i++) {
            if (visited[i]) {
                continue;
            }
            arr[count] = i + 1;
            visited[i] = true;
            nPr(count + 1);
            visited[i] = false;
        }
    }
}


1.2 해설

  • nPr 을 구하는 문제이다.

2. Go

CLOSING

쉬웠다.

Leave a comment