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 | 29 | 30 |
Tags
- 등수구하기
- java
- 모든행과열대각선의합
- 백준
- 아스키코드
- 두 배열 합치기
- 배열
- 연속부분수열
- 인프런
- 코테준비
- 점수계산
- 자바
- 격자판
- 누적 계산
- 보이는 학생
- 알고리즘
- 가장 짧은 문자거리
- 10992
- GitHub #Commit #BaekJoon
- 임시반장 정하기
- 공통원소 구하기
- 10991
- array
- 큰 수 출력하기
- 최대 길이
- Two Pointer
- 투 포인터
- ArrayList
- Pointer
- 뒤집은 소수
Archives
- Today
- Total
ezhoon
[백준] 10870_피보나치 수5_Java 본문
📖 문제
⚠️ 주의사항
- 메모이제이션을 고려해서 튜닝 해볼 것
✍️ 이해
/**
* 0~2 사이의 숫자가 들어올 경우 바로 출력 시켜버리면 된다.
* 3이후부터는 solution 클래스로 들어가서 pibo 배열에 값 넣으면서 구한다.
* 이때 pibo[num] 값이 0이 아니면 굳이 다시 구할 필요가 없으므로 바로 return 해버린다.
*/
✏️ 풀이
import java.util.Scanner;
/**
* 0~2 사이의 숫자가 들어올 경우 바로 출력 시켜버리면 된다.
* 3이후부터는 solution 클래스로 들어가서 pibo 배열에 값 넣으면서 구한다.
* 이때 pibo[num] 값이 0이 아니면 굳이 다시 구할 필요가 없으므로 바로 return 해버린다.
*/
public class Math_10870 {
static int[] pibo;
static int solution(int n, int num) {
if(pibo[num] != 0) {
return pibo[num];
} else {
for (int i = 3; i <= n; i++) {
pibo[i] = solution(n, i - 2) + solution(n, i - 1);
}
}
return pibo[num];
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
pibo = new int[n+1];
if(n >= 0) pibo[0] = 0;
if(n >= 1) pibo[1] = 1;
if(n >= 2) pibo[2] = 1;
if(n < 3) System.out.println(pibo[n]);
else {
solution(n, 3);
System.out.println(pibo[n]);
}
}
}