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 |