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

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

 

2133๋ฒˆ: ํƒ€์ผ ์ฑ„์šฐ๊ธฐ

3×N ํฌ๊ธฐ์˜ ๋ฒฝ์„ 2×1, 1×2 ํฌ๊ธฐ์˜ ํƒ€์ผ๋กœ ์ฑ„์šฐ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•ด๋ณด์ž.

www.acmicpc.net

 

๋ฌธ์ œ ํ’€์ด

 3xN ํฌ๊ธฐ์˜ ๋ฒฝ์„ 2x1, 1x2 ํฌ๊ธฐ์˜ ํƒ€์ผ๋กœ ์ฑ„์šฐ๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด ๊ฒฝ์šฐ๋ฅผ ์ฐพ์•„๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

 

  • N์ด ํ™€์ˆ˜์ธ ๊ฒฝ์šฐ ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” 0์ด๋‹ค.
    • 2x1, 1x2๋กœ๋Š” N์ด ํ™€์ˆ˜์ธ ๊ฒฝ์šฐ ์ฑ„์šธ ์ˆ˜ ์—†๋‹ค.
  • N = 2
    • 3๊ฐ€์ง€ ๊ฒฝ์šฐ์˜ ์ˆ˜
  • N = 4
    • 2์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜ * 3 + 2
  • N = 6
    • 4์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜ * 3 + 2์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜ * 2 + 2
  • N = 8
    • 6์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜ * 3 + 4์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜ * 2 + 2์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜ * 2 + 2
  • `dp[N] = dp[N - 2] * 3 + dp[N - 4] * 2 + ... dp[N-N] * 2`

 

์ฝ”๋“œ

from sys import stdin


if __name__ == '__main__':
    n = int(stdin.readline())
    dp = [0] * 31
    dp[0], dp[2] = 1, 3

    for i in range(4, n + 1):
        dp[i] = dp[i - 2] * 3

        for j in range(4, i + 1, 2):
            dp[i] += dp[i - j] * 2

    print(dp[n])

 

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€