본문 바로가기

백준

BOJ[JAVA] 10974 모든 순열

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

 

10974번: 모든 순열

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

www.acmicpc.net

 

import java.io.*;
import java.util.*;

public class Main {
	static int N, res=0;	// res : 만들 수 있는 수의 개수
	static int[] num = {1, 5, 10, 50};	// 로마 문자(I, V, X, L) 숫자 저장
	static int[] ans;
	
	public static void backtracking(int idx, int cnt, int sum) {
		if(cnt == N) {
			if(ans[sum] == 0) {
				ans[sum] = 1;
				res++;
			}
			
			return;
		}
		
		for(int i=idx;i<4;i++) {
			backtracking(i, cnt+1, sum+num[i]);
		}
	}

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		N = Integer.parseInt(br.readLine());	// 문자 개수
		ans = new int[1001];	// 만들 수 있는 수 저장할 배열 (만들 수 있으면 1로 표시)
		
		backtracking(0, 0, 0);
		
		bw.write(Integer.toString(res));	//	만들 수 있는 수의 개수 출력
		bw.flush();
		bw.close();
	}
}

'백준' 카테고리의 다른 글

BOJ[JAVA] 1912 연속합  (0) 2023.06.11
BOJ[JAVA] 1062 가르침  (0) 2023.06.11
BOJ[JAVA] 9461 파도반 수열  (0) 2023.05.14
BOJ[JAVA] 11727 2xn 타일링 2  (0) 2023.05.14
BOJ[JAVA] 2579 계단 오르기  (0) 2023.05.14