개발자일걸요..?

15651번 N과 M(3) 본문

알고리즘코딩/Baekjoon Online Judge

15651번 N과 M(3)

Re_A 2021. 2. 6. 20:51
728x90
반응형

문제링크 : www.acmicpc.net/problem/15651

 

15651번: N과 M (3)

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

www.acmicpc.net

 

 

 

이전 15649번과 유사하나 수열에 모든 경우의 수가 올수 있다.

ex) N = 4,  M = 2였을 경우,

     15649번 => arr의 경우의 수는 4*3가지

     15650번 => arr의 경우의 수는 (4*3)/2가지

     15651번 => arr의 경우의 수는 4*4 가지

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

public class Main {
	static int arr[] = new int[8];
	//static boolean check[] = new boolean[8];
	public static void function(int index, int N, int M, StringBuilder sb) {
		if(index==M) {
			for(int i =0;i<M;i++) {
				sb.append(arr[i]);
				if(i!=M-1){sb.append(' ');}
			}
			sb.append("\n");
		}
		else {
			for(int i = 1;i<=N;i++) {
				arr[index] = i;
                function(index+1,N,M,sb);
			}
		}
	}
	public static void main(String[] as) {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		String s = "";
		StringBuilder sb = new StringBuilder();
		try {
			s = bf.readLine();
		} catch(IOException e) {}
		StringTokenizer st = new StringTokenizer(s);
		int N = Integer.parseInt(st.nextToken());
		int M = Integer.parseInt(st.nextToken());
		function(0,N,M,sb);
		System.out.println(sb);
	}
}
반응형

'알고리즘코딩 > Baekjoon Online Judge' 카테고리의 다른 글

1003번 피보나치 함수  (0) 2021.02.08
15652번 N과 M(4)  (0) 2021.02.06
15650번 N과 M(2)  (0) 2021.02.06
15649번 N과 M(1)  (0) 2021.02.05
10814번 나이순 정렬  (0) 2021.02.04
Comments