728x90
반응형
메모이제이션 기법을 처음 알았다!! 이해하는데 좀 걸렸다.
import java.util.Scanner;
public class supersum {
public static void main(String[] args) {
int memo[][] = new int[15][15];
Scanner sc = new Scanner(System.in);
int k,n;
while(sc.hasNextInt()) {
k = sc.nextInt();
n = sc.nextInt();
init(memo);
System.out.println(func(k,n,memo));
}
}
static int func(int k, int n, int[][] m) {
int result = 0;
if(m[k][n]>0) return m[k][n];
else {
for(int i=1;i<=n;i++) {
result += func(k-1, i, m);
}
m[k][n] = result;
return result;
}
}
static void init(int m[][]) {
for(int i=0;i<15;i++) {
for(int j =0;j<15;j++) {
if(i==0) m[0][j] = j;
else m[i][j] = 0;
}
}
}
}
func()에서 result 변수를 선언하지 않고 m[k][n] += func(k-1, i, m)으로 계산해서 계속 틀렸었다.
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[문제] 백준 4673번 셀프넘버 (0) | 2021.01.19 |
---|---|
[문제] 백준 8958번 OX 퀴즈 (0) | 2021.01.19 |
[문제] 백준 4344번 평균은 넘겠지 (0) | 2021.01.19 |
[문제] 백준 1110번 더하기 사이클 (0) | 2021.01.19 |
[알고리즘]백준 1339번 단어 수학 (0) | 2020.06.28 |