250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 자바
- java
- 정올 1620
- 순열
- 백준15652
- 23288
- N과M
- 중복순열
- 알고리즘
- 중복조합
- 백준2251
- 완탐
- 코테
- 백준
- 알고리즘개념
- 에라토스테네스의채
- 볼륨 만들기
- 완전탐색
- 정보처리기사
- 주사위굴리기2
- 전화번호속의암호
- 파티션 크기 조정
- 재귀함수
- D드라이브생성
- 백준13458
- Bfs와DFS
- 코테준비
- 삼성역테
- BFS
- 자바 코테
Archives
- Today
- Total
뚱땅뚱땅
[문제] 코드업 1930번 supersum- 메모이제이션으로 풀기 본문
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 |
Comments