<재귀>
-> 함수 여러번 호출 방식
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
bw.write(fact(N)+"");
bw.flush();
}
public static int fact(int N){
if(N==0){
return 1;
}
return N*fact(N-1);
}
}
<메모이제이션>
-> 배열에 값을 저장해서 호출 방식
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
bw.write(fact(N)+"");
bw.flush();
}
public static int fact(int N){
if(N==0) {
return 1;
}else{
int arr[] = new int[N+1];
arr[0]=1;
for (int i = 1; i <= N; i++) {
arr[i] = i*arr[i-1];
}
return arr[N];
}
}
}
재귀와 메모이제이션 사용법을 몇번 사용해보니까 어느정도 감이 잡히는 느낌이다. 알고리즘 꽤 재밌을지도...!
'Algorithm > Java' 카테고리의 다른 글
[알고리즘_Java] 백준 5555번 반지 (substring) (0) | 2022.02.25 |
---|---|
[알고리즘_Java] 백준 17173번 배수들의 합 (HashSet) (0) | 2022.02.19 |
[알고리즘_Java] 백준 10870번 피보나치 수 5 (재귀, 메모이제이션) (0) | 2022.02.04 |
[알고리즘_Java] 백준 2292번 벌집 (0) | 2022.02.02 |
[알고리즘_Java] 백준 1316번 그룹 단어 체커 (0) | 2022.02.01 |