Foma's ํ์ด
ํผ๋ณด๋์น ์์ด์ F(n) = F(n-1) + F(n-2) ๊ฐ ์ ์ฉ๋ฉ๋๋ค.
๊ณ ๋ก n-1๋ฒ์งธ์ n-2๋ฒ์งธ ์ ์ฉ๋ ์๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด ํต์ฌ์ด๋ผ๊ณ ์๊ฐ๋ฉ๋๋ค. (n-1๋ฒ์งธ๋ฅผ before๋ก n-2๋ฒ์งธ๋ฅผ beforebefore๋ก ๋ถ๋ฅด๊ฒ ์ต๋๋ค.)
์ฐ์ 2์ด์์ n์ด ์ ๋ ฅ๋๋ฏ๋ก ๊ฐ์ฅ ์ต์๊ฐ์ด 2๋ฅผ ๋ฃ๋๋ค๊ณ ๊ฐ์ ํ๋ฉด F(2)๋ฅผ ๊ตฌํ๊ธฐ ์ํด์
before๋ F(1) beforebefore๋ F(0)๋ฅผ ๋ํ ๊ฐ์ด ๋ ๊ฒ์ ๋๋ค.
๊ณ ๋ก before์ ์ด๊ธฐ๊ฐ์ 1์ผ๋ก beforebefore์ ์ด๊ธฐ๊ฐ์ 0์ผ๋ก ์ค์ ํ๊ฒ ์ต๋๋ค. -> var before = 1
var beforebefore = 0
๋ํ n๊ฐ์ ์ ์ฅํ numbers๋ ์ต์๊ฐ์ด 2์ด๋ฏ๋ก ์ด๊ธฐ๊ฐ์ 2๋ก ์ค์ ํ๊ฒ ์ต๋๋ค. -> var numbers = 2
๋ํ before๊ฐ์ ์ฌ์ ์ ์ ์ฅํ beforeCopy๋ผ๋ ๋ณ์๋ ๋ง๋ค์ด์ค๋๋ค. -> var beforeCopy = 1
ํ๋ผ๋ฏธํฐ๋ก b(before)์ bb(beforebefore)์ n์ ๊ฐ๋ fibo๋ผ๋ ํจ์๋ ๋ง๋ค์ด์ฃผ๊ฒ ์ต๋๋ค. -> func fibo(_ b:Int,_ bb:Int,_ n:Int) -> Int{ ... }
beforeCopy ๊ฐ์ b๋ก (before๊ฐ์ด ๋ณํ๋๋ฏ๋ก ๋ฏธ๋ฆฌ ๊ฐ์ ์ ์ฅํด๋ก๋๋ค.) before๊ฐ์ (bb + b) % 1234567๋ก ๋๋๊ฐ beforebefore๋ฅผ before๋ฅผ ์ ์ฅํ beforeCopy๋ก ๋ฐ๊ฟ์ค๋๋ค. ->
beforeCopy = b
before = (bb + b)%1234567
beforebefore = beforeCopy
numbers๋ฅผ 1 ์ฆ๊ฐ์์ผ์ค๋๋ค. (while๋ฌธ์ ๋ ผ๋ฆฌ์ ๋์ผ) -> numbers += 1
numbers๊ฐ n๋ณด๋ค ์๋ค๋ฉด b์ before๊ฐ์ bb์ beforebefore๊ฐ์ n์ n์ ๋ฃ์ด์ฃผ๊ณ ์ฌ๊ท์์ผ์ฃผ๊ณ ์๋๋ผ๋ฉด before(n-1)๊ณผ beforebefore(n-2)๋ฅผ ๋ํ๊ฒ์์ 1234567๋ก ๋๋ ์ค ๋๋จธ์ง ๊ฐ์ ๋ฐํํด์ค๋๋ค.
if numbers < n {
return fibo(before, beforebefore, n)
}else{
return (before + beforebefore)%1234567
}
์ ์ฒด์ฝ๋
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
var numbers = 2
var before = 1
var beforebefore = 0
var beforeCopy = 1
func solution(_ n:Int) -> Int {
return fibo(before, beforebefore, n)
}
func fibo(_ b:Int,_ bb:Int,_ n:Int) -> Int{
beforeCopy = b
before = (bb + b)%1234567
beforebefore = beforeCopy
numbers += 1
if numbers < n {
return fibo(before, beforebefore, n)
}else{
return (before + beforebefore)%1234567
}
}
|
ํท๊ฐ๋ฆฐ์
n๋ฒ์งธ ํผ๋ณด๋์น์๋ฅผ 1234567๋ก ๋๋ ์ค ๋๋จธ์ง๊ฐ์ ๋ฐํํ๋ผ๊ธธ๋ ๋ฐ๋ณตํ๋ค๊ฐ ๋ง์ง๋ง n๋ฒ์งธ๋ง ๋๋๋ฉด ๋๋์ค ์์๋๋ฐ ๋ชจ๋ ๊ณผ์ ์์ 1234567๋ก ๋๋ ์ค ๋๋จธ์ง ๊ฐ์ผ๋ก ์ค์ ํด์ฃผ์ด์ผํ๋ค.
func fibo(_ b:Int,_ bb:Int,_ n:Int) -> Int{
...
before = (bb + b)%1234567
...
}
์ด ๋ถ๋ถ
'๐ Problem Solution > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค JadenCase ๋ฌธ์์ด ๋ง๋ค๊ธฐ Swift (0) | 2020.10.10 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค N๊ฐ์ ์ต์๊ณต๋ฐฐ์ Swift (0) | 2020.10.09 |
ํ๋ก๊ทธ๋๋จธ์ค ํ๋ ฌ์ ๊ณฑ์ Swift (0) | 2020.10.05 |
2019 KAKAO BLIND RECRUITMENT ์คํ์ฑํ ๋ฐฉ Swift (0) | 2020.09.24 |
ํ๋ก๊ทธ๋๋จธ์ค ์์ด ๋๋ง์๊ธฐ Swift (0) | 2020.09.24 |
๋๊ธ