19-20 동계 모각코 동아리 9회차 결과

 

백준

n과 m(5)

package bj;
import java.lang.reflect.Array;
import java.util.*;
public class bj_15654 {
	static boolean[] c = new boolean[8];
	static int[] a = new int[8];
	static int[] arr;
	static void go(int index, int n, int m)
	{
		if(index == m)
		{
			for(int i = 0; i<m; i++)
			{
				System.out.print(a[i]);
				if (i != m-1) System.out.print(' ');
			}
			System.out.println();
			return;
		}
		for(int i = 0; i<n; i++)
		{
			if(c[i]) continue;
			c[i] = true;
			a[index] = arr[i];
			go(index+1, n, m);
			c[i] = false;
		}	
		return;
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();
		arr = new int[n];
		for(int i = 0; i<n; i++)
		{
			arr[i] = sc.nextInt();
			//System.out.println(arr[i]);
		}
		Arrays.sort(arr);
		go(0, n, m);
	}

}

n과 m(6)

package bj;
import java.util.*;
public class bj_15655 {

	static boolean[] c = new boolean[8];
	static int[] a = new int[8];
	static int[] arr;
	static void go(int index, int start, int n, int m)
	{
		if(index == m)
		{
			for(int i = 0; i<m; i++)
			{
				System.out.println(a[i]);
				if (i != m-1) System.out.print(' ');
			}
			return;
		}
		for(int i = start; i<n; i++)
		{
			if(c[i]) continue;
			c[i] = true;
			a[index] = arr[i];
			go(index+1, i+1, n, m);
			c[i] = false;
		}	
		return;
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();
		arr = new int[n];
		for(int i = 0; i<n; i++)
		{
			arr[i] = sc.nextInt();
			//System.out.println(arr[i]);
		}
		Arrays.sort(arr);
		go(0, 0, n, m);
	}
}

n과 m(7)

package bj;
import java.util.*;
public class bj_15656 {

	static boolean[] c = new boolean[8];
	static int[] a = new int[8];
	static int[] arr;
	static StringBuilder go(int index, int n, int m)
	{
		if(index == m)
		{
			StringBuilder sb = new StringBuilder();
			for(int i = 0; i<m; i++)
			{
				sb.append(arr[a[i]]);
				if (i != m-1) sb.append(" ");
			}
			sb.append("\n");
			return sb;
		}
		StringBuilder ans = new StringBuilder();
		for(int i = 0; i<n; i++)
		{
			//if(c[i]) continue;
			c[i] = true;
			a[index] = i;
			ans.append(go(index+1, n, m));
			c[i] = false;
		}	
		return ans;
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt();
		arr = new int[n];
		for(int i = 0; i<n; i++)
		{
			arr[i] = sc.nextInt();
			//System.out.println(arr[i]);
		}
		Arrays.sort(arr);
		System.out.println(go(0, n, m));
	}
}

과제로 풀어온 n과 m(1) ~ (4) 문제들의 응용이기 때문에 많은 시간을 필요로 하지않았다.

StringBuilder를 언제 쓰면 좋은지 아직 잘 모르겠다.

다음과제는 남은 n과 m 문제와 다음 수열, 이전 수열, 모든 수열 문제이다.