๐Ÿค–/๋ฐฑ์ค€

๋ฐฑ์ค€ 1003: ํ”ผ๋ณด๋‚˜์น˜ ํ•จ์ˆ˜ (Python)

sssbin 2022. 3. 29. 14:55

 

https://www.acmicpc.net/problem/1003

 

1003๋ฒˆ: ํ”ผ๋ณด๋‚˜์น˜ ํ•จ์ˆ˜

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค 0์ด ์ถœ๋ ฅ๋˜๋Š” ํšŸ์ˆ˜์™€ 1์ด ์ถœ๋ ฅ๋˜๋Š” ํšŸ์ˆ˜๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net

 

์ฒ˜์Œ ์ฝ”๋“œ - ๊ฑ ๋ƒ…๋‹ค ๊ณ„์‚ฐ..

๋‹น์—ฐํžˆ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋‚  ์ค„ ์•Œ์•˜์Œ

def fib(n):
    d = [0] * (n + 1)

    if n == 0:
        count[0] += 1
        return 1
    if n == 1:
        count[1] += 1
        return 1
    d[n] = fib(n - 1) + fib(n - 2)
    return d[n]

t = int(input())
for i in range(t):
    n = int(input())
    count = [0, 0]
    fib(n)
    print(count[0], count[1])

 

๊ทœ์น™์„ ์ฐพ์•˜๋‹ค

ํ”ผ๋ณด๋‚˜์น˜๊ฐ€ fib(n) = fib(n-1) + fib(n-2) ๋‹ˆ๊นŒ

์ „ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•ด์„œ ๋ถˆ๋Ÿฌ์˜ค๋ฉด ๋œ๋‹ค

 

d = [[0, 0] for _ in range(41)]
d[0] = [1, 0]
d[1] = [0, 1]

for i in range(2, 41):
    d[i][0] = d[i-1][0] + d[i-2][0]
    d[i][1] = d[i-1][1] + d[i-2][1]

t = int(input())
for i in range(t):
    n = int(input())
    print(d[n][0], d[n][1])

 

n์˜ ๋ฒ”์œ„๊ฐ€ 40๊นŒ์ง€๋ฐ–์— ์•ˆ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค ๊ฐ’์„ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๊ณ 

์ฒ˜์Œ์— ๋ฏธ๋ฆฌ 0~40๊นŒ์ง€์˜ ๊ณ„์‚ฐ์„ ๋ชจ๋‘ ๋๋‚ด๋†“๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์‹คํ–‰ํ•จ