카테고리 없음

BOJ[JAVA] 16922 로마 숫자 만들기

양갱이요 2023. 4. 16. 21:05

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

 

16922번: 로마 숫자 만들기

2, 6, 10, 11, 15, 20, 51, 55, 60, 100을 만들 수 있다.

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();
	}
}