https://www.acmicpc.net/problem/16922
๋ก๋ง ์ซ์ 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);
}
}
}
๊ฒฐ๊ณผ
'Algorithm > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
1213๋ฒ - ํฐ๋ฆฐ๋๋กฌ ๋ง๋ค๊ธฐ (0) | 2022.08.11 |
---|---|
๋ฐฑ์ค 3040๋ฒ - ๋ฐฑ์ค ๊ณต์ฃผ์ ์ผ๊ณฑ ๋์์ด (0) | 2022.08.11 |
๋ฐฑ์ค 16926๋ฒ : ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ 1 (0) | 2022.08.09 |
2304๋ฒ - ์ฐฝ๊ณ ๋ค๊ฐํ (0) | 2022.08.09 |
๋ฐฑ์ค 1158๋ฒ - ์์ธํธ์ค ๋ฌธ์ (0) | 2022.08.08 |