본문 바로가기
  • 개발 삽질 블로그
프로그래밍/백준 문제풀이

백준 10974: 모든 순열

by 갹둥 2022. 10. 13.

https://www.acmicpc.net/problem/10974

 

10974번: 모든 순열

N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.

www.acmicpc.net

이 문제는 모든 순열을 출력하는 문제다. 원소가 1부터 증가하는 정수이기 때문에 배열 말고 for문을 이용하였다. 

import java.util.*;
public class Main {
	 	public static void pick(int a[], int m, int toPick) {
	 		if(toPick==0) {
	 			for(int i=0; i<m; i++)
	 				System.out.print(a[i]+" ");
	 			System.out.println();
	 			return ;
	 		}
	 		int lastIndex = m-toPick-1;
	 		for(int i = 1; i<=m; i++)
	 		{
	 			boolean f = false;
	 			for(int j=0; j<=lastIndex; j++)
	 				if(a[j]==i)
	 					f=true;
	 			if(f) continue;
	 			a[lastIndex+1] = i;
	 			pick(a, m, toPick-1);
	 		}
	 		
	 	}
        public static void main(String args[]) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            int[] a = new int[n];
            pick(a, n, n);
            
        }
}

'프로그래밍 > 백준 문제풀이' 카테고리의 다른 글

백준 6603: 로또(JAVA)  (0) 2022.11.30
백준 1182: 부분수열의 합  (1) 2022.11.17
백준 10973: 이전 순열(JAVA)  (0) 2022.10.12
백준 10972: 다음 순열(JAVA)  (0) 2022.10.12
백준 9095번: 1, 2, 3 더하기  (0) 2022.10.03