๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
3๏ธโƒฃ Swift/Problem Solving

[Swift Algorithm] ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜ Programmers(Lv.2)

by seolhee2750 2021. 7. 8.
๋ฌธ์ œ ์„ค๋ช…

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋Š” F(0) = 0, F(1) = 1์ผ ๋•Œ, 1 ์ด์ƒ์˜ n์— ๋Œ€ํ•˜์—ฌ F(n) = F(n-1) + F(n-2) ๊ฐ€ ์ ์šฉ๋˜๋Š” ์ˆ˜ ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด

  • F(2) = F(0) + F(1) = 0 + 1 = 1
  • F(3) = F(1) + F(2) = 1 + 1 = 2
  • F(4) = F(2) + F(3) = 1 + 2 = 3
  • F(5) = F(3) + F(4) = 2 + 3 = 5

์™€ ๊ฐ™์ด ์ด์–ด์ง‘๋‹ˆ๋‹ค.

2 ์ด์ƒ์˜ n์ด ์ž…๋ ฅ๋˜์—ˆ์„ ๋•Œ, n๋ฒˆ์งธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ 1234567์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

 

์ œํ•œ ์กฐ๊ฑด

* n์€ 1์ด์ƒ, 100000์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ
n return
3 2
5 5

 

๋‚ด ๋ฌธ์ œ ํ’€์ด
func solution(_ n:Int) -> Int {
  var fibo = [0, 1]
  
  for i in 2...n {
    fibo.append((fibo[i-2] + fibo[i-1]) % 1234567)
  }
  
  return fibo[n]
}
  • ์–ด์ฐจํ”ผ n์€ 2 ์ด์ƒ๋งŒ ์ž…๋ ฅ๋˜๊ณ , 0, 1์˜ ๊ฒฝ์šฐ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜๋ฅผ ๊ตฌํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— [0, 1] ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•ด์ค€๋‹ค.
  • fibo ๋ฐฐ์—ด์— 2๋ถ€ํ„ฐ ํ•ด๋‹น ์ˆ˜์˜ ์ด์ „ ์ˆ˜, ๊ทธ ์ „ ์ˆ˜๋ฅผ๋”ํ•œ ๊ฐ’์„ 1234567๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ append ํ•ด์ค€๋‹ค. 
  • ์ฒ˜์Œ์—๋Š” 1234567๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ , ๋‚˜๋ˆ„์ง€ ์•Š์€ ๊ฐ’๋“ค์„ ๋ชจ๋‘ ๋ฐฐ์—ด์— ๋‹ด๊ณ  ๋‚˜์ค‘์— ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•˜๋Š” ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ์—ˆ๋Š”๋ฐ, ๊ทธ๋ ‡๊ฒŒ ํ•˜๋‹ˆ๊นŒ ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ์ปค์ ธ์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

 

๐Ÿ’ก ํ”ผ๋“œ๋ฐฑ
  • ๊ตฌํ˜„ํ•  ๋•Œ ๊ผญ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ํฌ๊ธฐ๋„ ์ƒ๊ฐํ•ด์ฃผ์ž!
  • ํ”ผ๋ณด๋‚˜์น˜๋Š” ํ•„์ˆ˜์ ์ด๊ณ , ๊ฐœ๋…์„ ์ž˜ ์•Œ์•„๋‘๋ฉด ๋‹ค๋ฅธ ๋ฌธ์ œ์—์„œ๋„ ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž˜ ๊ธฐ์–ตํ•ด๋‘์ž.

 


 

๐Ÿ– [ ์ถ”๊ฐ€ ] 1์ฃผ์ผ ํ›„ ๋‹ค์‹œ ํ’€์–ด๋ณด๊ธฐ

func solution2(_ n:Int) -> Int {
    if n == 0 { return 0 }
    else if n == 1 { return 1 }
    return (solution2(n - 1) + solution2(n - 2)) % 1234567
}
  • ์–ผ๋งˆ ์ „ ๊ณต๋ถ€ํ•œ ์žฌ๊ท€ํ•จ์ˆ˜๋กœ ํ’€๋ฉด ๊ฐ„๋‹จํ•  ๊ฒƒ ๊ฐ™์•„์„œ ์‹œ๋„ํ•ด๋ณธ ์ฝ”๋“œ์ด๋‹ค.
  • ์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•˜๋‹ˆ ์ฝ”๋“œ๋Š” ๊ฐ„๋‹จํ•˜์ง€๋งŒ, ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(2^n)์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ํ‹€๋ ธ๋‹ค.

 


 

๋ฌธ์ œ

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

๋Œ“๊ธ€