15650: N과 M (2)

wnajsldkf·2022년 10월 15일
0

Algorithm

목록 보기
10/58
post-thumbnail

N과 M (1)과 유사한 문제이다.

설명

  • depth가 M과 같을 때까지 반복을 돌면서 출력 배열을 채워나간다.
  • 현재 출력을 시작하는 pivot 뒤에 있는 것부터 출력하기 때문에 visited는 따로 관리하지 않아도 된다.

코드

public class P15650 {
	static int N, M;
    static int arr[];	// 출력에 활용할 array
    static boolean visited[];	// 방문 표시
    
    public static void main(String[] args) throws IOException {
    	System.setIn(new FileInputStream("src/Algorithm/P15650/input.txt"));
		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];
        
        dfs(0, 0);
	}
    
    private static void dfs(int at, int depth) {
    	if (depth == M) {
        	for (int i = 0; i < M; i++) {
            	System.out.print(arr[i] + " ");
			}
            System.out.println();
            return;
		}
        
        for (int i = at; i < N; i++) {
        	System.out.print(arr[i] + " ");
			dfs(i + 1, depth + 1);
		}            
	}    
}    
profile
https://mywnajsldkf.tistory.com -> 이사 중

0개의 댓글