본문 바로가기
개발/코딩테스트

백준 15650번: N과 M(2) [JAVA]

by 로또 2023. 3. 15.

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

 

15650번: N과 M (2)

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

www.acmicpc.net

  • 풀이

조합 구하기

  • 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	static int N;
	static int M;
	static boolean isSelected[];
	static int select[];
	
	static void combination(int r, int start) {
		if (r == M) {
			for(int i=0; i<M; i++) System.out.print(select[i]+" ");
			System.out.println();
			return;
		}
		
		for (int i=start; i<N; i++) {
			if (isSelected[i]==true) continue;
			isSelected[i] = true;
			select[r] = i+1;
			combination(r+1, i);
			isSelected[i] = false;
		}
	}

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(bf.readLine());
		
		N = Integer.parseInt(st.nextToken());
		M = Integer.parseInt(st.nextToken());
		
		isSelected = new boolean[N];
		select = new int[M];
		
		combination(0,0);
	}
}

'개발 > 코딩테스트' 카테고리의 다른 글

9742번: 순열  (0) 2023.03.15
EOF 처리  (0) 2023.03.15
백준 2960번: 도영이가 만든 맛있는 음식 [JAVA]  (0) 2023.03.15
백준 1759번: 암호만들기 [JAVA]  (0) 2023.03.15
백준 17608번: 막대기 [JAVA]  (1) 2023.03.15

댓글