[python]๋ฐฑ์ค€ 9095๋ฒˆ : 1,2,3 ๋”ํ•˜๊ธฐ

๋ฌธ์ œ : ๋ฐฑ์ค€ 9095๋ฒˆ _ 1,2,3 ๋”ํ•˜๊ธฐ

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

๋‚˜์˜ ๋‹ต

# ๋ฐฑ์ค€ 9095๋ฒˆ: 1,2,3 ๋”ํ•˜๊ธฐ
# 2020-02-01

case = int(input()) # ์ž…๋ ฅ๋ฐ›๊ธฐ
num = []

def cpt_num(n):
    if n>3: # 3๋ณด๋‹ค ํฌ๋ฉด
        return cpt_num(n-3) + cpt_num(n-2) + cpt_num(n-1)
    elif n==3: # 3์ด๋ฉด
        return 4
    elif n==2: # 2์ด๋ฉด
        return 2
    elif n==1: # 1์ด๋ฉด
        return 1

while case :
    case-=1
    num.append(int(input()))

for n in num:
    print(cpt_num(n))

 ์–ด์ œ ๋ฐฐ์› ๋˜ ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ™œ์šฉํ•˜์—ฌ ๊ณ„์‚ฐ์„ ํ•ด๋ณด์•˜๋‹ค. ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋งค๊ฒจ์•ผํ•˜๋Š”๋ฐ ์ถœ๋ ฅ์— ๊ฒฝ์šฐ์˜ ์ˆ˜์— ํ•ด ๋‹นํ•˜๋Š” ๊ฐ’์„ ๋ชจ๋‘ ์ถœ๋ ฅํ•˜๋ผ๋Š” ๋ง์€ ์—†์–ด์„œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋งŒ ๊ตฌํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜๋ฅผ ๋งŽ์ด ์“ธ ํ•„์š”๊ฐ€ ์—†์—ˆ๋‹ค.

 ํ•จ์ˆ˜ cpt_num(n)์€ ์ฃผ์–ด์ง„ n์— ๋Œ€ํ•ด์„œ ๋ช‡ ๊ฐœ์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์กด์žฌํ•˜๋Š” ์ง€ ๊ณ„์‚ฐํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ์šฐ์„  ํ•ด๋‹น ์ˆ˜๊ฐ€ 3 ์ดํ•˜์ธ ๊ฒฝ์šฐ์— 1,2,3 ์ผ ๋•Œ๋Š” ์‰ฝ๊ฒŒ ์ง์ ‘ ๊ณ„์‚ฐํ•ด์„œ 1,2,4๊ฐ€์ง€์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋‚˜์˜จ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฃผ์–ด์ง„ ์ˆ˜๊ฐ€ 3์ดํ•˜์ธ ๊ฒฝ์šฐ๋ฅผ ๋‚˜๋ˆ„๊ณ  3์ด์ƒ์ธ ๊ฒฝ์šฐ์—๋Š” 1,2,3์„ ๋บ€ ๋‹ค์Œ์— ์žฌ๊ท€์ ์œผ๋กœ ๋‹ค์‹œ ํ•จ์ˆ˜์— ๋„ฃ๋Š”๋‹ค.

 ex_) 7์„ ํ•จ์ˆ˜์— ๋„ฃ์œผ๋ฉด 3๋ณด๋‹ค ํฌ๋ฏ€๋กœ f(4)+f(5)+f(6) ์ด return ๊ฐ’์ด๋‹ค. ์ด์— ๋”ฐ๋ผ ์žฌ๊ท€์ ์œผ๋กœ f(4)๋Š” f(1)+f(2)+f(3) ์ด๋Ÿฐ ์‹์œผ๋กœ ๋‹ค์‹œ ๊ณ„์‚ฐ๋œ๋‹ค. ํ’€์–ด์“ฐ๋ฉด f(4)+f(5)+f(6)={f(1)+f(2)+f(3)}+{f(2)+f(3)+f(4)}+{f(3)+f(4)+f(5)}์ด๋‹ค. ์—ฌ๊ธฐ์„œ f(1),f(2),f(3)์€ ๋ชจ๋‘ ์ƒ์ˆ˜๋กœ return ๋˜๋ฏ€๋กœ f(4),f(5)๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋ฉด ๋œ๋‹ค.

์ด ํ’€์ด๋ฒ•์€ 11์ด๋ผ๋Š” ์ž‘์€ ์ž…๋ ฅ ๋ฒ”์œ„ ๋•๋ถ„์— ๊ฐ€๋Šฅํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค. ์žฌ๊ท€๋ฅผ ๋Œ์•„์„œ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ’์ด ๋”ฐ๋กœ ์ €์žฅ๋˜์–ด์žˆ์ง€ ์•Š์Œ์œผ๋กœ ํ•ญ์ƒ ๋‹ค์‹œ ๊ณ„์‚ฐํ•ด์•ผํ•œ๋‹ค. ๋”ฐ๋ผ์„œ 11๋ฒˆ๋งŒ ๋Œ์•„๋„ 3^11์˜ ์žฌ๊ท€๋ฅผ ๋Œ๊ฒŒ ๋œ๋‹ค. 3^11์€ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” ์ •๋„์—ฌ์„œ ๊ดœ์ฐฎ์ง€๋งŒ ์ž…๋ ฅ์˜ ๋ฒ”์œ„๊ฐ€ ์ปค์ง€๋ฉด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. :)

 

๋‹ค๋ฅธ ๋‹ต

https://this-programmer.com/entry/%EB%B0%B1%EC%A4%809095%ED%8C%8C%EC%9D%B4%EC%8D%AC-1-2-3-%EB%8D%94%ED%95%98%EA%B8%B0

์ด ๋ธ”๋กœ๊ทธ์—์„œ๋Š” ๋ณธ์ธ๊ณผ ๊ฐ™์ด ๋ฆฌ์ŠคํŠธ์— ๊ณ„์‚ฐํ•œ ์ˆ˜๋“ค์„ ๋„ฃ๊ณ  ์•ž์˜ 3์ˆ˜์˜ ๊ณ„์‚ฐ๊ฐ’์„ ๋”ํ•˜๋ฉด ์ด๋ฒˆ index์˜ ๊ฒฐ๊ณผ๊ฐ’์ด ๋œ๋‹ค๋Š” ๊ทœ์น™์„ ๋ฐœ๊ฒฌํ•ด์„œ ํ’€์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ๊ฐ’๋“ค์„ ์ €์žฅํ•ด๋‘๊ณ  ๋‹ค์‹œ ์ด์šฉํ•˜์˜€๋‹ค.

 

๋ฐฐ์šด ๊ฒƒ

  • ์ •ํ•ด์ง„ ์ˆ˜์˜ ๋‚˜์—ด์€ ๋ฆฌ์ŠคํŠธ์— ๋‹ด์•„์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ด๋‹ค.
  • ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ฒฝ์šฐ์—๋Š” ๋ฌธ์ œ์˜ ๊ธฐ์ค€์— ๋งž๋Š”๋‹ค๋ฉด ์žฌ์‚ฌ์šฉ์„ฑ์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹๋‹ค.
๋ฐ˜์‘ํ˜•