[BOJ] 10974번 모든 순열 - JAVA

최영환·2023년 2월 5일
0

BaekJoon

목록 보기
30/87
post-thumbnail

💡 문제

💬 입출력 예시

📌 풀이(소스코드)

import java.util.Scanner;

public class Main {
	private static int n;		// 입력 받을 수
	private static int[] arr;	// 순열 저장을 위한 배열
	private static boolean[] visited;	// 방문 여부 확인을 위한 배열
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		arr = new int[n];
		visited = new boolean[n+1];
		permutation(0);
	}
	
	static void permutation(int count) {
		// 종료 조건
		if (count == n) {
			for (int i = 0; i < n; i++) {
				System.out.print(arr[i] + " ");
			}
			System.out.println();
		}
		
		for (int i = 1; i <=n; i++) {
			if (!visited[i]) {			// 미방문 시 추가
				arr[count] = i;
				visited[i] = true;		// 방문 처리
				permutation(count+1);	// 다음 숫자로 이동
				visited[i] = false;		// 다시 미방문으로 초기화
			}
		}
	}
}

📄 해설

  • 순열 알고리즘을 사용하여 해결하는 문제로, 중복 방지를 위해 방문 배열 visited 를 사용
  • 순열 알고리즘은 꼭 외워야한다
profile
조금 느릴게요~

0개의 댓글