Algorithm Problem/Python

[python] ๋ฐฑ์ค€ - 2410. 2์˜ ๋ฉฑ์ˆ˜์˜ ํ•ฉ

deo2kim 2020. 9. 21. 08:50
๋ฐ˜์‘ํ˜•

๐Ÿค”๋ฌธ์ œ ํ•ด๊ฒฐ

  • S1 | ๋‹ค์ด๋‚˜๋ฏนํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • ์œ ์‚ฌํ•œ ๋ฌธ์ œ 

 

[python] ๋ฐฑ์ค€ - 9084. ๋™์ „

๐Ÿค”๋ฌธ์ œ ํ•ด๊ฒฐ 1. S1 | ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ 2. target(๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ๊ธˆ์•ก)์˜ ๊ธธ์ด๋งŒํผ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค. 3. ๋‚ด๊ฐ€ ๊ฐ€์ง„ ๋™์ „์„ ํ•˜๋‚˜ํ•˜๋‚˜ ๊บผ๋‚ด์„œ ๋ฆฌ์ŠคํŠธ์˜ ์ธ๋ฑ์Šค(๋‚ด๊ฐ€ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ธˆ์•ก)๊ณผ ๋น„๊ตํ•˜๏ฟฝ๏ฟฝ

deok2kim.tistory.com

๋™์ „ ๋ฌธ์ œ์™€ ๋‹ค๋ฅธ ์ ์€ ๋™์ „์€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์‚ฌ์šฉํ•  ๊ฐ’์ด ์ •ํ•ด์ ธ ์žˆ์ง€๋งŒ

์ด ๋ฌธ์ œ๋Š” N์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์ด ๋Š˜์–ด๋‚œ๋‹ค.

N์ด 7์ด๋ฉด 1,2,4 ์ด์ง€๋งŒ N์ด 8์ด๋ฉด 1,2,4,8 ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ’จ

 

๐Ÿ’ป์†Œ์Šค ์ฝ”๋“œ

def solution(N):
    nums = [2 ** x for x in range(21)]
    dp = [0] * (N + 1)
    dp[0] = 1
    for num in nums:
        if num <= N:
            for j in range(num, N + 1):
                dp[j] += dp[j - num]
    print(dp[-1] % 1000000000)


if __name__ == "__main__":
    N0 = int(input())
    solution(N0)

 

๐Ÿ“•๋ฌธ์ œ ํ™•์ธ

์ถœ์ฒ˜: BACKJOON ONLINE JUDGE

๋งํฌ: https://www.acmicpc.net/problem/2410

 

2410๋ฒˆ: 2์˜ ๋ฉฑ์ˆ˜์˜ ํ•ฉ

์ฒซ์งธ ์ค„์— ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋‹ต์ด ์ปค์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ 1,000,000,000์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net


๋ฌธ์ œ

์–ด๋–ค ์ž์—ฐ์ˆ˜ N์„ 2์˜ ๋ฉฑ์ˆ˜์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. 2์˜ ๋ฉฑ์ˆ˜๋ผ๋Š” ๊ฒƒ์€, 2^k์œผ๋กœ ํ‘œํ˜„๋˜๋Š” ์ž์—ฐ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด 7์„ 2์˜ ๋ฉฑ์ˆ˜์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ๋‹ค์Œ์˜ ์—ฌ์„ฏ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N(1≤N≤1,000,000)์ด ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋‹ต์ด ์ปค์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ 1,000,000,000์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๋ฐ˜์‘ํ˜•