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

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[Java] - (Level2)ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜(์žฌ๊ท€ , ๋น„์žฌ๊ท€DP)

by ์ฃผ๋ฐœ2 2020. 3. 16.
๋ฐ˜์‘ํ˜•

https://programmers.co.kr/learn/courses/30/lessons/12945

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

์ฝ”๋“œ1(๋น„์žฌ๊ท€, DP)

class Solution {

  public int solution(int n) {
      int[] arr = new int[100001];
      arr[1] = 1;
      arr[2] = 1;
      for(int i=3; i<=n; i++)
          arr[i] = (arr[i-2] + arr[i-1]) % 1234567;
      return arr[n];
  }
}

ํ’€์ด

 

 

์ฝ”๋“œ2(์žฌ๊ท€)

class Solution {
  public static int fibo(int n){
      if(n<=1)
          return n;
      else  
          return (fibo(n-2) + fibo(n-1)) % 1234567;
  }

  public int solution(int n) {
      int answer = fibo(n);
      return answer;
  }
}

 

 

https://gam0za.tistory.com/4

์žฌ๊ท€๋ฅผ ์ด์šฉํ•œ ๋ฐฉ์‹์€ ํ˜ธ์ถœ ํ•œ๋ฒˆ๋‹น 2๋ฐฐ์”ฉ(F(n) = F(n-2) + F(n-1)) ๋Š˜์–ด๋‚˜๊ฒŒ ๋˜๊ณ , ์ด n๋‹จ๊ณ„ ์ด๋ฏ€๋กœ

BigO(2^N) ์ด๋‹ค. 

์ฃผ์–ด์ง„ n์˜ ๋ฒ”์œ„๋Š” 100000์ดํ•˜์ธ๋ฐ, 2^100000์€ ๋‹น์—ฐํžˆ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

2^30๋งŒ ํ•ด๋„ 10์–ต,

 

 

๋น„์žฌ๊ท€(DP)๋ฅผ ์ด์šฉํ•œ ๋ฐฉ์‹์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” BigO(N) ์ด๋‹ค.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€