뮁이의 개발새발

[JAVA] 백준 15651 N과 M(3) 본문

Algorithm

[JAVA] 백준 15651 N과 M(3)

뮁뮁이 2021. 11. 9. 03:53

매번 쓰는 순열 메소드를 사용해서 풀었음.

근데 시간초과가 나서 엥 하면서 질문을 찾아봤는데 어떤사람이 StringBuilder 썼다고 해서 반신반의하면서 썼더니 해결됨.... 더 좋은방법이 있을것같기도 하다

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

// StringBuilder 쓰니 시간초과 해결됨..
public class bj15651 {
	static int[] numbers;
	static int N, M;
	static StringBuilder sb = new StringBuilder();

	public static void main(String[] args) throws IOException {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(in.readLine());
		N = Integer.parseInt(st.nextToken());
		M = Integer.parseInt(st.nextToken());
		numbers = new int[M];
		permutation(0, 0);
		System.out.println(sb);
	}

	static void permutation(int cnt, int flag) {
		if (cnt == M) {
			for (int i = 0; i < numbers.length; i++) {
				sb.append(numbers[i] + " ");
			}
			sb.append("\n");
			return;
		}
		for (int i = 1; i <= N; i++) {
			numbers[cnt] = i;
			permutation(cnt + 1, flag | 1 << i);
		}
	}
}

'Algorithm' 카테고리의 다른 글

[JAVA] 백준 11660 구간 합 구하기 5 (DP)  (0) 2021.11.30
[JAVA] 백준 7569 토마토 (BFS)  (0) 2021.11.09
[JAVA] 백준 4673 셀프 넘버  (0) 2021.11.09
[JAVA] 백준 14499 주사위 굴리기  (0) 2021.11.08
[JAVA] 백준 5567 결혼식  (0) 2021.10.19
Comments