ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90

๐Ÿšฉ ๋™์ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(DP)

 

thinking

1. ์‹œ๊ฐ„์ดˆ๊ณผ ๋‚œ ์ฝ”๋“œ

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด ์ฝ”๋“œ์™€ ๋™์ผํ•˜๊ฒŒ ์งœ๋˜, n == 0 or 1 ์ธ ๊ฒฝ์šฐ 0๊ณผ 1์˜ ํ˜ธ์ถœํšŸ์ˆ˜๋ฅผ ์นด์šดํŠธํ•˜๋„๋ก ํ•จ์ˆ˜๋ฅผ ๊ตฌ์„ฑํ–ˆ๋‹ค.

output์€ ๋งž๊ฒŒ ๋‚˜์™”์ง€๋งŒ ์‹œ๊ฐ„์ดˆ๊ณผ ๋œธ

 

2. success ๐Ÿ˜€

0ํ˜ธ์ถœํšŸ์ˆ˜์™€ 1ํ˜ธ์ถœํšŸ์ˆ˜๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ๋งŒ๋“ค์–ด ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์ฒ˜๋Ÿผ n-1, n-2์˜ ํ˜ธ์ถœํšŸ์ˆ˜๋ฅผ ๋”ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์งฌ.

n = 8 ์ธ ๊ฒฝ์šฐ, cnt_0 = [1, 0, 1, 1, 2, 3, 5, 8], cnt_1 = [0, 1, 1, 2, 3, 5, 8, 13]๊ฐ€ ๋˜์–ด n๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค

 

์ฝ”๋“œ (pass)

T = int(input())
for tc in range(T):
    N = int(input())
    cnt_0 = [1, 0]  # 0 ํ˜ธ์ถœํšŸ์ˆ˜ ๊ธฐ๋กํ•˜๋Š” ๋ฆฌ์ŠคํŠธ
    cnt_1 = [0, 1]  # 1 ํ˜ธ์ถœํšŸ์ˆ˜ ๊ธฐ๋กํ•˜๋Š” ๋ฆฌ์ŠคํŠธ

    for i in range(2, N + 1):
        cnt_0.append(cnt_0[i - 1] + cnt_0[i - 2])  # ์ด์ „ ๋‘ ๋‹จ๊ณ„์˜ 0 ํ˜ธ์ถœํšŸ์ˆ˜๋ฅผ ๋”ํ•จ
        cnt_1.append(cnt_1[i - 1] + cnt_1[i - 2])

    print("{} {}".format(cnt_0[N], cnt_1[N]))

 

์‹œ๊ฐ„์ดˆ๊ณผ ๋‚œ ์ฝ”๋“œ (fail)

def f(n):
    global cnt_0, cnt_1
    if n == 0:  # n์ด 0์ด๋ฉด 0ํ˜ธ์ถœํšŸ์ˆ˜ 1 ์ฆ๊ฐ€
        cnt_0 += 1
        return cnt_0, cnt_1
    elif n == 1:  # n์ด 1์ด๋ฉด 1ํ˜ธ์ถœํšŸ์ˆ˜ 1 ์ฆ๊ฐ€
        cnt_1 += 1
        return cnt_0, cnt_1
    else:
        return f(n-1) + f(n-2)


T = int(input())
for tc in range(T):
    N = int(input())
    cnt_0, cnt_1 = 0, 0
    f(N)
    print("{} {}".format(cnt_0, cnt_1))

 

 

ํ•œ์ค„ํ›„๊ธฐ

์‹œ๊ฐ„์ดˆ๊ณผ ์–ด์ฉ”.. ๋งจ๋‚  ์‹œ๊ฐ„์ดˆ๊ณผ ๋œจ๊ณ  ๋‚˜์„œ์•ผ ์ฝ”๋“œ ๋‹ค์‹œ ์งœ๋Š” ์ธ์ƒ..

๋Œ“๊ธ€