백준 15649번: N과 M (1) :: 매운코딩
728x90
300x250

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

 

15649번: N과 M (1)

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

www.acmicpc.net

순열의 기본적인 문제..

순서대로 나열..

import java.util.*;

public class Main {

	public static int N,M;
	public static int[] ans;
	public static boolean[] visit;
	public static void main(String[] args){

		Scanner sc = new Scanner(System.in);

		N = sc.nextInt(); //전체 수 1~N 
		M = sc.nextInt(); //뽑을 갯수
		
		
		for (int i = 1; i <= N; i++) {
			ans = new int[M];
			visit= new boolean[N+1];
			int idx= 0;
			ans[idx++]=i; //첫 시작점 넣어주기
			
			visit[i]=true;
			dfs(idx);
			visit[i]=false;
		}
	}
	
	public static void dfs( int idx) {
		
		//종료조건
		//갯수 다 뽑았는가?
		if(idx==M) {
			for (int i = 0; i < M; i++) {
				System.out.print(ans[i]+" ");
			}
			System.out.println();
			return;
		}
		
		
		for (int i = 1; i <= N; i++) {
			
			//이미 뽑았던 숫자면 제외
			if(visit[i])
				continue;
			
			ans[idx]=i;
			
			visit[i]=true;
			dfs(idx+1);
			visit[i]=false;
			
			
		}
	}

}

 

728x90

'알고리즘 > 조합 & 순열' 카테고리의 다른 글

백준 15655번: N과 M (6)  (0) 2020.03.04
백준 15654번: N과 M (5)  (0) 2020.03.04
백준 15652번: N과 M (4)  (0) 2020.03.04
백준 15651번: N과 M (3)  (0) 2020.03.03
백준 15650번: N과 M (2)  (0) 2020.03.03

+ Recent posts