๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/๋ฐฑ์ค€(BOJ)

[ ํŒŒ์ด์ฌ(python) ] ๋ฐฑ์ค€ 2775 - ๋ถ€๋…€ํšŒ์žฅ์ด ๋ ํ…Œ์•ผ

by YWTechIT 2021. 6. 10.
728x90

๐Ÿ“ ๋ฐฑ์ค€ 2775 - ๋ถ€๋…€ํšŒ์žฅ์ด ๋ ํ…Œ์•ผ

๋ฐฑ์ค€ 2775 - ๋ถ€๋…€ํšŒ์žฅ์ด ๋ ํ…Œ์•ผ


๐Ÿ’ก ๋‚˜์˜ ํ’€์ด

์ด ๋ฌธ์ œ๋Š” DP, ์žฌ๊ท€๋กœ ํ’€ ์ˆ˜ ์žˆ์ง€๋งŒ, DP๋กœ ํ‘ธ๋Š”๋ฐฉ๋ฒ•์ด ์‹œ๊ฐ„์ด ํ›จ์”ฌ ๋‹จ์ถ•๋œ๋‹ค. ์žฌ๊ท€๋กœ ํ’€๋•Œ๋Š” python3์—์„œ ์‹œ๊ฐ„์ดˆ๊ณผ์— ๊ฑธ๋ฆฌ๋ฏ€๋กœ pypy๋กœ ์ œ์ถœํ•ด์•ผํ•œ๋‹ค.

 

DP ํ’€์ด๋ฐฉ๋ฒ•์ด๋‹ค.

 

  1. 0์ธต์˜ i๋Š” i๋ช…์ด ์‚ด๊ธฐ๋•Œ๋ฌธ์— ์ œ์ผ ์•„๋ž˜๋Š” [1, 2, 3, 4...]๋‹ค.
  2. ๋ฌธ์ œ๋Š” ์ธต์ˆ˜๊ฐ€ ์ฆ๊ฐ€ ํ• ๋•Œ๋งˆ๋‹ค ์ด์ „ ์ธต์ˆ˜์˜ 1ํ˜ธ๋ถ€ํ„ฐ bํ˜ธ๊นŒ์ง€ ๋”ํ•œ๊ฐ’์„ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”๋ฐ ์ด๋•Œ DP๊ฐ€ ์“ฐ์ธ๋‹ค.
  3. arr[i] += arr[i-1]๋กœ 1ํ˜ธ๋ถ€ํ„ฐ bํ˜ธ๊นŒ์ง€ ๊ฐ’์„ ๋ˆ„์ ์‹œํ‚จ๋‹ค.
  4. ์ธต์ˆ˜๊ฐ€ ์˜ฌ๋ผ๊ฐˆ๋•Œ๋Š” 3๋ฒˆ ๋ฐ˜๋ณต๋ฌธ ๋ฐ”๊นฅ์— ํ•˜๋‚˜ ๋” ์„ ์–ธํ•œ๋‹ค. for _ in range(k)

 

์žฌ๊ท€ ํ’€์ด๋ฐฉ๋ฒ•์ด๋‹ค. a: ์ธต, b: ํ˜ธ

  1. ํ•˜๋‹จ์˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ ์ด์ „ index + ์•„๋ž˜ index๋ฅผ ๋”ํ•ด์ค€๋‹ค.
  2. ์ข…๋ฃŒ ์กฐ๊ฑด์€ a == 0: return b, b == 1: return 1์ด๋‹ค.

 

# DP
T = int(input())

for _ in range(T):
    k = int(input())
    n = int(input())
    floor = [i for i in range(1, n+1)]

    for _ in range(k):
        for i in range(1, n):
            floor[i] += floor[i-1]
    print(floor[-1])

# ์žฌ๊ท€
def check(a, b):
    if not a:
        return b
    if b == 1:
        return 1
    return check(a, b-1) + check(a-1, b)

for _ in range(int(input())):
    k = int(input())
    n = int(input())
    print(check(k, n))
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€