๋ฌธ์
ํด๋น ํฌ์คํ ์ ๋ฐฑ์ค์ 10870๋ฒ ํผ๋ณด๋์น ์5 ์ ์ ๊ทผ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค๋ช ํ ๊ธ ์ ๋๋ค.
์ ๋ต ์์ค ์ฝ๋๋ฅผ ํ์ธํ์๋ ค๋ฉด solve url ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
๋ฌธ์
์์ ์ ๋ ฅ & ์ถ๋ ฅ
ํด๊ฒฐ๋ฒ
ํด๋น ๋ฌธ์ ๋ํ ์ฌ๊ท ํธ์ถ์ ๋ํ ๊ฐ๋ ์ ํ์ตํ ๋ ์ฐ๊ตฌํ๋ ์ฃผ์ ์ด๋ค.
ํผ๋ณด๋์น ์๋ ๋ฌธ์ ์ ์๋ ํน์ฑ๋๋ก n = (n-1) + (n-2)
์ธ ์๋ฅผ ๋์ดํ ์์ด์ด๋ค.
๊ตฌํ ์์ฒด๋ ์ง๋ ์ฌ๊ท ํธ์ถ์ ์ ๋ฐ๋ผ์๋ค๋ฉด ํ๋ค์ง ์์ ๊ฒ์ผ๋ก ๋ณด๊ณ ์๊ฐ ๋ณต์ก๋์ ์ถ๋ ฅ ์๋ฃํ์ ๋ํด์ ๊ณ ๋ฏผํด๋ณด์.
์๊ฐ ๋ณต์ก๋
ํผ๋ณด๋์น ์์ด์ ์๊ฐ ๋ณต์ก๋๋ ์กฐ๊ธ ์๊ฐํด๋ณผ ๊ฐ์น๊ฐ ์๋ค.
ํผ๋ณด๋์น ์์ด์ ์ฌ๊ท ํจ์๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ํ ๋ฒ ๊ทธ๋ ค๋ณด์๋ฉด,
์์ ๊ฐ์ด ํธ๋ฆฌ ํํ์ ๊ตฌ์กฐ๋ฅผ ๋๊ฒ ๋๋ค.
ํธ๋ฆฌ ์ค์์ ์์ ๋
ธ๋๊ฐ 2๊ฐ๋ก ์์ ํ ๋ฐ์ด๋๋ฆฌ ํธ๋ฆฌํํ๊ฐ ๋๋ค.
๊ทธ๋ผ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ์ ํน์ฑ์ ์ํด์ ๋์ด n์ธ ๋ฐ์ด๋๋ฆฌ ํธ๋ฆฌ์ ์ด ๋
ธ๋๋ 2^n์ด๋ฏ๋ก ์ฌ๊ท๋ก ํด๋น ๋ฌธ์ ๋ฅผ ์ ๊ทผํ๋ค๋ฉด 2^n ์ฆ ์ต๋ 2์ 20์ ๊ณฑ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๊ฒ ๋๋ค.
๊ทธ๋ผ 2์ 10์น์ด 1024์ด๋ฏ๋ก 1024 * 1024๋ 1000๋ง์ด๋ค.
๋ณดํต ์๊ณ ๋ฆฌ์ฆ์์ 1์ด์ 1์ต๋ฒ์ ์ฐ์ฐ์ ์ปค๋ฒํ ์ ์๋ค๊ณ ํ๋ ์ถฉ๋ถํ ์ฌ๊ท๋ก ํ ์ ์๋ ๋ฌธ์ ์ด๋ค.
์ค๋ต ํ๋ณด
์ด๋ฒ ๋ฌธ์ ์์๋ 20๋ณด๋ค ์์ ์์ฐ์ ๋๋ 0 ์ด๋ผ๊ณ ํ์ผ๋ 0์ด input์ผ๋ก ๋ค์ด์ฌ case๋ฅผ ์ผ๋ํด์ผ ํ๋ค.
๊ทธ๋ผ 0๊ณผ 1, 2์ ๋ฐํ ๊ฐ์ ๊ฐ๊ฐ ๋ค๋ฅด๊ฒ ์๊ฐํด์ผ ํ๋ค.
0์ ๋ฐํ ๊ฐ์ 0์ด์ด์ผ ํ๊ณ , 1๊ณผ 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 n = Integer.parseInt(br.readLine());
bw.write(String.valueOf(fibonacci(n)));
bw.flush();
bw.close();
}
private static int fibonacci(int n) {
if(n == 0) return 0;
else if(n == 1 || n == 2) return 1;
else return fibonacci(n-1) + fibonacci(n-2);
}
}
๋๊ธ