Algorithm/๋ฐฑ์ค€

๋ฐฑ์ค€ 16922๋ฒˆ - ๋กœ๋งˆ ์ˆซ์ž ๋งŒ๋“ค๊ธฐ

giraffe_ 2022. 8. 11. 11:25

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

 

16922๋ฒˆ: ๋กœ๋งˆ ์ˆซ์ž ๋งŒ๋“ค๊ธฐ

2, 6, 10, 11, 15, 20, 51, 55, 60, 100์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

www.acmicpc.net

 

 

 

 

๋กœ๋งˆ ์ˆซ์ž I, V, X, L 4๊ฐœ ์ค‘์—์„œ ์ค‘๋ณตํ•ด์„œ N๊ฐœ๋ฅผ ๋ฝ‘๋Š” ์ค‘๋ณต ์กฐํ•ฉ ๋ฌธ์ œ์ด๋‹ค.

 

์ค‘๋ณต ์กฐํ•ฉ์„ ๋Œ๋ ค์„œ ์กฐํ•ฉ์˜ ๊ฒฐ๊ณผ ๋ฐฐ์—ด์— ๋กœ๋งˆ ์ˆซ์ž๋“ค์˜ ๊ฐ’์„ ๋‹ด๋„๋ก ํ–ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์กฐํ•ฉ์ด ์™„์„ฑ๋˜๋ฉด ๊ทธ ํ•ฉ์„ ๊ณ„์‚ฐํ•ด, ์ƒˆ๋กœ์šด ๊ฐ’์ด๋ฉด(์ˆซ์ž์ด๋ฉด) ๋ฆฌ์ŠคํŠธ์— ๋‹ด๋„๋ก ํ–ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ •๋‹ต์€ ๋ฆฌ์ŠคํŠธ์˜ ์‚ฌ์ด์ฆˆ๋กœ ๋„์ถœํ•˜๋ฉด ๋œ๋‹ค.

 

 

 

 

 

์ฝ”๋“œ

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
	static int N;
	static int[] romeNum = {1, 5, 10, 50};
	static int[] result;
	static List<Integer> list;

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		N = sc.nextInt();
		
		result = new int[N];
		list = new ArrayList<>();

		comb(0, 0);
		
		System.out.println(list.size());
	}

	public static void comb(int start, int depth) {
		if(depth == N) {
			int sum = 0;
			for(int n : result) {
				sum += n;
			}
			
			if(!list.contains(sum)) {
				list.add(sum);
			}
			
			return;
		}
		
		for(int i = start; i < romeNum.length; i++) {
			result[depth] = romeNum[i];
			comb(i, depth + 1);
		}
	}
}

 

 

 

 

 

 

๊ฒฐ๊ณผ