๋ฌธ์
ํด๋น ํฌ์คํ ์ ๋ฐฑ์ค์ ๋ฌธ์ ์ด๋ฆ ์ ์ ๊ทผ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค๋ช ํ ๊ธ ์ ๋๋ค.
์ ๋ต ์์ค ์ฝ๋๋ฅผ ํ์ธํ์๋ ค๋ฉด solve url ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
๋ฌธ์
์์ ์ ๋ ฅ & ์ถ๋ ฅ
ํด๊ฒฐ๋ฒ
ํด๋น ๋ฌธ์ ๋ ์ฌ๊ท ํธ์ถ์ ์ฌ์ฉํ ์ผ๋ฐ์ ์ธ ํผ๋ณด๋์น ํจ์์์ 0๊ณผ 1์ด ๊ฐ๊ฐ ์ผ๋ง๋ ์ถ๋ ฅ๋๋์ง ํ์ธํ๊ณ ์ถ์ดํ๋ ๋ฌธ์ ์ด๋ค.
์ฆ, ์ฐ๋ฆฌ๊ฐ ์ง๋ ์ฌ๊ท ํธ์ถ ์ด๋ก ์๊ฐ์์ ์ด์ผ๊ธฐ ํ๋ 0๊ณผ 1์ ์ค๋ณต์ ๋ํด์ ์๊ฐํด๋ณด์๋ ๋ฌธ์ ๋ก ๋ฐ์๋ค์ผ ์ ์๋ค.
๊ทผ๋ฐ ์กฐ๊ธ ์๊ฐ์ ํด๋ณด์์ผ ํ ๊ฒ์ด ์๊ฐ ์ ํ์ด 0.25์ด๋ก ์ฃผ์ด์ง๋ค.
์ด๋ค ์ธ์ด์ด๋ ๊ฐ์ ์ถ๊ฐ ์๊ฐ์ ์ฃผ์ง ์๋๋ค๊ณ ํ๋ค.
๊ทธ๋ผ ์ฌ์ค์ ์ฐ๋ฆฌ์ ์๊ณ ๋ฆฌ์ฆ์ด 1์ด์ 400๋ง์ ์ฐ์ฐ๋ง ์ปค๋ฒํ ์ ์๋ค๊ณ ์๊ฐํด์ผ ํ๋ค.
ํผ๋ณด๋์น ํจ์์ ์๊ฐ ๋ณต์ก๋๋ ์ง๋ ํผ๋ณด๋์น ์5์์ ์์๋ณด์๋ฏ, ํธ๋ฆฌ์ ํน์ฑ์ ๊ทธ๋๋ก ์ด์ด๋ฐ์ 2์ n์ ๊ณฑ์ด ๋๋ค๊ณ ํ๋ค.
๋ฌธ์ ์์๋ n์ด 40๊น์ง ์ฃผ์ด์ง ์ ์๋ค๊ณ ํ์ผ๋ 2์ 40์ ๊ณฑ๊น์ง๋ง ์ปค๋ฒ๋ฅผ ํ ์ ์๋ค๊ณ ํ์ ๋ 2์ 10 _ 4๋ฅผ ํ๋ฉด 1024 _ 4 ๋ฅผ ์ํํ๋ฉด 1์กฐ๊ฐ ๋์จ๋ค..
๊ทธ๋ผ ์ ๋๋ก ์ฌ๊ทํธ์ถ๋ก ํ๋ฉด ํด๋น ๋ฌธ์ ๋ ํต๊ณผํ์ง ์์ผ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์๊ฐํด์ผ ํ๋๋ฐ, ์ด๋ ๊ฒ ์์ฃผ ๋ง์ ์์ ๋ฐ์ดํฐ, ๋ง์ ์์ ๋ฌธ์ ๋ฅผ ํ ๋ฒ์ ํด๊ฒฐํ๊ธฐ ํ๋ค ๋ ์์ ์ฌ๋ฌ ๋ฌธ์ ๋ก ๋๋์ด์ ํธ๋ ๋์ ํ๋ก๊ทธ๋๋ฐ์ ๋์ ํ ์ ์๋ค.
์ ๊ทผ๋ฒ
์ฐ๋ฆฌ๋ ํผ๋ณด๋์น ํจ์๋ฅผ ์ง์ ํ๋ํ๋ ๋ค ๊ตฌํํ์ง ์๊ณ ๊ฐ ์ฌ๊ท ํธ์ถ์ ํน์ฑ์ ํ์ ํด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ฒ์ด๋ค.
๋ค์๊ณผ ๊ฐ์ด fibonacci ์ฌ๊ท ํจ์๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
int fibonacci(int n) {
if(n == 0) {
System.out.println("0");
return 0;
}else if(n ==0) {
System.out.println("1");
return 1;
}else {
return fibonacci(n-1) + fibonacci(n-2);
}
}
๊ทธ๋ผ ๊ฐ๊ฐ์ ์ฌ๊ท ํธ์ถ์ ์ํํ ๊ฒฐ๊ณผ 0๊ณผ 1์ด ์ถ๋ ฅ๋๋ ํ์๋ ๋ค์๊ณผ ๊ฐ๋ค.
0์ ์ถ๋ ฅ 1์ ์ถ๋ ฅ
fibo(0) = 1 0
fibo(1) = 0 1
fibo(2) = 1 1
๊ทธ๋ผ fibo(3)์ผ ๋ 0๊ณผ 1์ด ๋ช๋ฒ ์ถ๋ ฅ ๋ ๊น?
fibo(3)์ fibo(1) + fibl(2) ์ด๋ฏ๋ก ๊ฐ๊ฐ์ ํ์์์ ์ถ๋ ฅ๋ 1๊ณผ 0์ ์๋ก ๋ํ๋ฉด ๋์ง ์์๊น?
๊ทธ๋ ๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ํต์ฌ์ด๋ค.
์ ํ์์ผ๋ก ํํํ๋ค๋ฉด, ๋ค์๊ณผ ๊ฐ๋ค.
fibo[n][0] = fibo[n-1][0] + fibo[n-2][0];
fibo[n][1] = fibo[n-1][1] + fibo[n-2][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 t = Integer.parseInt(br.readLine());
int[][] fibo = new int[41][2];
fibo[0][0] = 1; fibo[0][1] = 0;
fibo[1][0] = 0; fibo[1][1] = 1;
while(t-- > 0) {
int n = Integer.parseInt(br.readLine());
if(n > 1) {
for(int i = 2; i <= n; i++){
fibo[i][0] = fibo[i-1][0] + fibo[i-2][0];
fibo[i][1] = fibo[i-1][1] + fibo[i-2][1];
}
}
bw.write(fibo[n][0] + " " + fibo[n][1] + "\n");
}
bw.flush();
bw.close();
}
}
๋๊ธ