Algorithm/백준 알고리즘

백준_10974 모든 순열(자바) / 브루드 포스 알고리즘

미스터로즈 2021. 7. 18. 10:17

시간&메모리 제한

 

문제

 

입력&출력

 

문제 풀이

package com.back;

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

public class Back_10974 {
	static int N;
	static boolean[] visited;
	static int[] temp,arr;

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		N = Integer.parseInt(br.readLine());
		visited = new boolean[N];
		temp = new int[N];
		arr = new int[N];
		for (int i = 0; i < N; i++) {
			temp[i] = i+1;
		}
		
		perm(0);
	}

	private static void perm(int depth) {
		if(depth == N) {
			for (int i = 0; i < N; i++) {
				System.out.print(arr[i]+" ");
			}
			System.out.println();
			return;
		}
		for (int i = 0; i < N; i++) {
			if(visited[i]) {
				continue;
			}
			visited[i] = true;
			arr[depth] = temp[i];
			perm(depth+1);
			visited[i]=false;
		}
	}
}

- 이 문제는 브루드 포스 알고리즘 문제입니다.

- 즉 모든 경우의 수를 다 조사하는 방법입니다.

- nPn의 경우에 대한 순열을 출력하는 문제입니다.

- perm의 함수에서 for문을 통해서 3개의 값을 선택합니다.

- 3개의 갯수가 다 채워지면 조건문을 통해 빠져나가고 출력을 해줍니다.