Algorithm/๋ฐฑ์ค€

๋ฐฑ์ค€ 15652๋ฒˆ : N๊ณผ M (4) (Java)

skyey94 2022. 1. 17. 01:33

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

 

15652๋ฒˆ: N๊ณผ M (4)

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

www.acmicpc.net


๐Ÿ“– ํ’€์ด ๊ณผ์ •

 

- ์žฌ๊ท€ ์œ ํ˜•์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
- 15650๋ฒˆ ๋ฌธ์ œ์˜ ์กฐ๊ฑด๋ฌธ์—์„œ ์ด์ „์˜ ๊ฐ’(๋งˆ์ง€๋ง‰์— ๋ฐฐ์—ด์— ํ• ๋‹นํ•œ ๊ฐ’)๊ณผ ์ง€๊ธˆ ๋„ฃ์„ ๊ฐ’์ด ๊ฐ™์„ ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
- ์ €๋Š” ๋‹จ์ˆœํžˆ ์ด ๋‘๊ฐ€์ง€์— ๋Œ€ํ•œ ์กฐ๊ฑด๋ฌธ์„ ๋ช…์‹œํ•ด์„œ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
- ์ถ”ํ›„, ์ข€ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑ์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 


๐Ÿ’ป ์ฝ”๋“œ

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

public class Main {
 static int n,m;
 static int[] arr;
 static boolean[] visited;
 
 public static void main(String[] args) throws IOException {
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  StringTokenizer st = new StringTokenizer(br.readLine()," ");
  n = Integer.parseInt(st.nextToken());
  m = Integer.parseInt(st.nextToken());
  visited = new boolean[n + 1];
  arr = new int[m];
  
  solve(0);
 }
 
 public static void solve(int idx){
  if(idx == m){
   for(int i = 0; i< m; i++){
    System.out.print(arr[i] + " ");
   }
   System.out.println();
   return;
  }
  
  for(int i = 1; i<= n; i++){
   if(visited[i] && arr[idx - 1] == i){
    visited[i] = true;
    arr[idx] = i;
    solve(idx + 1);
    visited[i] = false;
   }
   else if(!visited[i]){
    if(idx == 0 || arr[idx - 1] < i){
     visited[i] = true;
     arr[idx] = i;
     solve(idx + 1);
     visited[i] = false;
    }
   }
  }
 }
}