๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

๋ฐฑ์ค€ 2749๋ฒˆ : ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜ 3 | JAVA

by Yunny52 2023. 3. 21.

 

๐Ÿ“Œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ํƒ

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋Š” dp๋ฅผ ํ™œ์šฉํ•˜์—ฌ fibo[i] = fibo[i-1] + fibo[i-2]์˜ ๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ตํžˆ ์•Œ๊ณ  ์žˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ,, ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง€๋Š” n ๊ฐ’์˜ ๋ฒ”์œ„๊ฐ€ ๋„ˆ๋ฌด ์ปค์„œ ๊ทธ๋ƒฅ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆฌ๋ฉด ๋ถ„๋ช…ํžˆ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜๊ธฐ์—,, ์–ด๋–ป๊ฒŒ ๊ทœ์น™์„ ์ฐพ์•„์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์ค‘์ ์ ์œผ๋กœ ๊ณ ๋ฏผํ–ˆ๋‹ค.

 


๐Ÿ“Œ ํ’€์ด

์šฐ์„  ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ ๋‹ด์„ ๋ฐฐ์—ด์—๋Š” 1,000,000์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€์˜ ๊ฐ’์„ ๋‹ด์•„ ์ˆ˜์˜ ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์€ ์‰ฌ์› ๋‹ค.

ํ•˜์ง€๋งŒ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์˜ ๊ทœ์น™์„ ์ฐพ๋Š” ๊ฒƒ์€ ๊ฝค ์–ด๋ ค์› ๋‹ค. ๊ทœ์น™์„ ์ฐพ๊ณ  ์‹ถ์–ด์„œ 50๋ฒˆ์งธ๊นŒ์ง€ ์†์œผ๋กœ ๊ตฌํ•ด๋ดค๋Š”๋ฐ, ๋„๋ฌด์ง€ ๊ทœ์น™์ด ๋‚˜์˜ค์ง€ ์•Š์•„ ๊ฒฐ๊ตญ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์˜ ๊ทœ์น™์— ๋Œ€ํ•ด ๊ฒ€์ƒ‰ํ•ด๋ดค๋‹ค.

 

'ํ”ผ์‚ฌ๋…ธ ์ฃผ๊ธฐ(pisano period)' ๋ผ๊ณ  ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋Š” ์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ง„๋‹ค๋Š” ๊ทœ์น™์ด ์žˆ์—ˆ๋‹ค.

์ฃผ๊ธฐ๋ฅผ P๋ผ๊ณ  ํ•˜๊ณ , ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ ๋‚˜๋ˆ„๋Š” ์ˆ˜๋ฅผ M์ด๋ผ๊ณ  ํ•  ๋•Œ,

M = 10^k (k>2) ์ผ ๋•Œ, P = 15 * 10^(k-1) ์ด๋‹ค.

 

๋”ฐ๋ผ์„œ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ 1,000, 000์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค๋ฉด 1,500,000๋ฒˆ์„ ์ฃผ๊ธฐ๋กœ ๋˜‘๊ฐ™์€ ๋‚˜๋จธ์ง€ ๊ฐ’์ด ์ฃผ์–ด์ง„๋‹ค.

 

ํ”ผ์‚ฌ๋…ธ ์ฃผ๊ธฐ๋งŒ ์•ˆ๋‹ค๋ฉด, ๊ฐ„๋‹จํžˆ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€๋‹ค.

(๋Œ€๋ถ€๋ถ„ ํ”ผ์‚ฌ๋…ธ ์ฃผ๊ธฐ์— ๋Œ€ํ•ด ๋ชจ๋ฅผ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•œ๋‹ค .. ์ด ๋ฌธ์ œ๊ฐ€ ๊ณจ๋“œ2์ธ ์ด์œ ์ธ๊ฐ€ ..)

 


๐Ÿ“Œ ์ฝ”๋“œ

import java.io.IOException;
import java.util.Scanner;

public class Main {

    // 1,000,000(๋ฐฑ๋งŒ)์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅ
    public static void main(String[] args) throws IOException {

        Scanner sc = new Scanner(System.in);
        int pisano = 1500000;
        long[] fibo = new long[pisano+1];
        long n = sc.nextLong() % pisano;


        fibo[0] = 0;
        fibo[1] = 1;
        for(int i = 2; i <= pisano; i++) {
            fibo[i] = (fibo[i-1] + fibo[i-2]) % 1000000;
        }

        System.out.println(fibo[(int)n]);

    }

}

 

 

๋Œ“๊ธ€