728x90
반응형
[백준 알고리즘] 1003번 피보나치 (java)
1. 피드백
1.1 2번은 캐시 사용해서 푼 것 / 3번은 캐시 사용하지 않고 푼 것
2. Source (캐시 사용)
package acmicpc;
import java.util.Scanner;
/**
* @author lee
*
*/
public class Num1003UsingCache
{
private static int cache[][] = new int[41][2];
public static void main(String [] args)
{
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
int n = 0;
for (int i = 0 ; i < T ; i++)
{
n = sc.nextInt();
fibonacci(n);
print(n);
}
}
public static void print(int n)
{
System.out.println(cache[n][0] + " " + cache[n][1]);
}
public static int[] fibonacci(int n)
{
int result[];
if (cache[n][0] != 0 || cache[n][1] != 0)
{
return cache[n];
}
if (n == 0)
{
cache[n][0] += 1;
return cache[n];
}
else if (n == 1)
{
cache[n][1] += 1;
return cache[n];
}
else
{
result = fibonacci(n-1);
cache[n][0] += result[0]; cache[n][1] += result[1];
result = fibonacci(n-2);
cache[n][0] += result[0]; cache[n][1] += result[1];
return cache[n];
}
}
}
3.Source (캐시 사용 X )
package acmicpc;
import java.util.Scanner;
/**
* @author lee
*
*/
public class Num1003
{
public static void main(String [] args)
{
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
int n = 0;
int res[][] = new int[T][2];
for (int i = 0 ; i < T ; i++)
{
n = sc.nextInt();
fibonacci(n, res[i]);
}
for (int i = 0 ; i < T ; i++)
{
System.out.println(res[i][0] + " " + res[i][1]);
}
}
public static void fibonacci(int n, int res[])
{
if (n == 0) res[0] += 1;
else if (n == 1) res[1] += 1;
else
{
fibonacci(n-1, res);
fibonacci(n-2, res);
}
}
}
'algorithm > acmicpc' 카테고리의 다른 글
[백준 알고리즘] 1927번 최소 힙 (0) | 2018.06.25 |
---|---|
[BOJ] 9465 스티커 (java) (0) | 2018.01.30 |
[백준 알고리즘] 1005번 ACM Craft (0) | 2018.01.29 |
[백준 알고리즘] 1004번 어린왕자 (java) (0) | 2018.01.29 |
[백준 알고리즘] 1002번 터렛 (Java) (0) | 2018.01.26 |
댓글