๐ค๋ฌธ์ ํด๊ฒฐ
-
S1 | ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
-
์ ์ฌํ ๋ฌธ์
๋์ ๋ฌธ์ ์ ๋ค๋ฅธ ์ ์ ๋์ ์ ์ฒ์๋ถํฐ ์ฌ์ฉํ ๊ฐ์ด ์ ํด์ ธ ์์ง๋ง
์ด ๋ฌธ์ ๋ 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
๋ฌธ์
์ด๋ค ์์ฐ์ N์ 2์ ๋ฉฑ์์ ํฉ์ผ๋ก ๋ํ๋ด๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. 2์ ๋ฉฑ์๋ผ๋ ๊ฒ์, 2^k์ผ๋ก ํํ๋๋ ์์ฐ์๋ฅผ ์๋ฏธํ๋ค.
์๋ฅผ ๋ค์ด 7์ 2์ ๋ฉฑ์์ ํฉ์ผ๋ก ๋ํ๋ด๋ ๊ฒฝ์ฐ์ ์๋ ๋ค์์ ์ฌ์ฏ ๊ฐ์ง๊ฐ ์๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N(1≤N≤1,000,000)์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๊ฒฝ์ฐ์ ์๋ฅผ ์ถ๋ ฅํ๋ค. ๋ต์ด ์ปค์ง ์ ์์ผ๋ฏ๋ก 1,000,000,000์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ค.
'Algorithm Problem > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ๋ฐฑ์ค - 9251. LCS (0) | 2020.09.22 |
---|---|
[python] ๋ฐฑ์ค - 11497. ํต๋๋ฌด (0) | 2020.09.21 |
[python] ๋ฐฑ์ค - 4883. ์ผ๊ฐ ๊ทธ๋ํ (0) | 2020.09.20 |
[python] ๋ฐฑ์ค - 13335. ํธ๋ญ (0) | 2020.09.20 |
[python] ๋ฐฑ์ค - 2617. ๊ตฌ์ฌ ์ฐพ๊ธฐ (0) | 2020.09.19 |