Skip to content

Commit 23f2e23

Browse files
committed
비교코드 추가
1 parent 9a0300b commit 23f2e23

File tree

1 file changed

+31
-9
lines changed

1 file changed

+31
-9
lines changed

src/test/java/algorithm/recursion/Dice.java

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,45 @@ public class Dice {
1414

1515
@Test
1616
public void test() {
17-
assertThat(calcDiceCase(3), is(4));
18-
assertThat(calcDiceCase(4), is(8));
19-
assertThat(calcDiceCase(5), is(16));
20-
assertThat(calcDiceCase(6), is(32));
21-
assertThat(calcDiceCase(7), is(63));
22-
assertThat(calcDiceCase(8), is(125));
17+
assertThat(calcDiceCase1(3), is(4));
18+
assertThat(calcDiceCase1(4), is(8));
19+
assertThat(calcDiceCase1(5), is(16));
20+
assertThat(calcDiceCase1(6), is(32));
21+
assertThat(calcDiceCase1(7), is(63));
22+
assertThat(calcDiceCase1(8), is(125));
23+
assertThat(calcDiceCase1(3), is(4));
24+
25+
assertThat(calcDiceCase2(4), is(8));
26+
assertThat(calcDiceCase2(5), is(16));
27+
assertThat(calcDiceCase2(6), is(32));
28+
assertThat(calcDiceCase2(7), is(63));
29+
assertThat(calcDiceCase2(8), is(125));
2330
}
2431

2532
private int dp[] = new int[1000];
26-
public int calcDiceCase(int n) {
33+
/**
34+
* 메모이제이션을 사용하지 않은 경우
35+
* 단점 : 숫자가 커질수록 느려진다.
36+
*/
37+
public int calcDiceCase1(int n) {
38+
if (n < 0) return 0;
39+
if (n == 0) return 1;
40+
return calcDiceCase1(n - 1) + calcDiceCase1(n - 2) +
41+
calcDiceCase1(n - 3) + calcDiceCase1(n - 4) +
42+
calcDiceCase1(n - 5) + calcDiceCase1(n - 6);
43+
}
44+
/**
45+
* 메모이제이션을 사용하는 경우
46+
* 장점 : 속도가 빠르다.
47+
*/
48+
public int calcDiceCase2(int n) {
2749
if (n < 0) return 0;
2850
if (n == 0) return 1;
2951
int result = 0;
3052
for(int i = 1; i<=6; i++){
31-
if(i >= 0){
53+
if(n - i >= 0){
3254
if(dp[n - i] == 0){
33-
dp[n - i] = calcDiceCase(n - i);
55+
dp[n - i] = calcDiceCase2(n - i);
3456
}
3557
result += dp[n - i];
3658
}

0 commit comments

Comments
 (0)