λ¬Έμ
μμλλΌλ νΉμ΄νκ² λͺ¨λ μμ(prime number)λ₯Ό νν λ¨μλ‘ μ¬μ©νλ€.
μμλλΌμ λλ¬ μ¨ νλλ κ΄κ΄μ νλ€κ° κ°κ²©μ΄ NμΈ λ¬Όκ±΄μ λ°κ²¬νκ³ λ무 λ§μμ λ€μ΄ 999983μμ λ΄κ³ ꡬ맀νλ €κ³ νλ€. νμ§λ§ μμ μ£ΌμΈμ΄ κ±°μ€λ¦λμ΄ μμ΄ μ νν Nμμ μ§λΆν΄λ¬λΌκ³ νμλ€.
물건μ ꡬ맀νλ €λ νλλ μμλλΌμ ννλ₯Ό μ΄μ©νμ¬ Nμμ μ νν λ§λ€ μ μλ λ°©λ²μ κ°μ§μκ° μΌλ§λ λλμ§ κΆκΈν΄μ‘λ€.
νλλ₯Ό λμ Nμμ μ§λΆνκΈ° μν κ°μ§μκ° μΌλ§λ λλμ§ κ΅¬ν΄λ³΄μ.
λ¨, νλλ μμλλΌμ λͺ¨λ ννκ° λ¬΄νμ μλ€κ³ κ°μ νλ€.
μ λ ₯
ꡬ맀νλ €κ³ νλ 물건μ κ° N(2 ≤ N ≤ 40,000, Nμ μ μ)μ΄ μ£Όμ΄μ§λ€.
μΆλ ₯
μμλλΌμ ννλ₯Ό μ΄μ©νμ¬ μ§λΆν μ μλ λ°©λ²μ μλ₯Ό μΆλ ₯νλ€.
λ¨, μ§λΆν μ μλ λ°©λ²μ μκ° λ§€μ° ν¬κΈ°λλ¬Έμ, 123,456,789λ‘ λλ λλ¨Έμ§ κ°μ μΆλ ₯νλ€.
https://www.acmicpc.net/problem/16400
π‘ νμ΄ λ° μ½λ
import math
def is_prime(num):
for i in range(2, int(math.sqrt(num))+1):
if num % i == 0:
return False
return True
n = int(input())
prime = []
for i in range(2, n+1):
if is_prime(i):
prime.append(i)
dp = [0 for _ in range(n+1)]
dp[0] = 1
for p in prime:
for i in range(p, n+1):
dp[i] = (dp[i] + dp[i-p]) % 123456789
print(dp[n])
λ°±μ€ 2293λ² λ¬Έμ μ λΉμ·ν μ νμ DP λ¬Έμ μ΄λ€. μμ΄λμ΄κ° ν·κ°λ¦°λ€λ©΄ μλ κ²μλ¬Όμ μ°Έκ³ νμ.
( μ°Έκ³ : https://zu-techlog.tistory.com/48?category=948141 )
μ λ ₯λ°μ μ nλ³΄λ€ μμ μμ μ§ν©μ ꡬνλ κ³Όμ μμ μ€ν μκ° λ¨μΆνλ κ²μ΄ κ΄κ±΄μ΄μλ€. κΈ°μ‘΄μ λ°©μμΌλ‘ is_prime ν¨μμμ μμλ₯Ό νλ³ν λ λ°λ³΅λ¬Έμ 2λΆν° νλ³ν μ(num)κΉμ§ λμκ°κ² νλ€λ©΄ μκ°λ³΅μ‘λκ° O(n^2)κ° λμ΄ μκ°μ΄κ³Όκ° λλ€. λ°λΌμ, is_prime ν¨μ λ΄μμ λ°λ³΅λ¬Έμ μ½μμ νΉμ±μ λ°μν΄ numκΉμ§κ° μλ numμ μ κ³±κ·Ό κ°κΉμ§λ§ λλ € μμλ₯Ό νλ³νλ€. μ΄λ‘μ¨ μκ°μ΄κ³Ό λ¬Έμ κ° ν΄κ²°λμλ€. νμ§λ§ μμ½κ²λ λ°±μ€ μ λ΅ μ μΆ μ μΈμ΄λ₯Ό Python3λ‘ μ€μ νλ©΄ μ¬μ ν μκ°μ΄κ³Όκ° λ°μνλ€. PyPy3λ‘ μ μΆν΄μΌλ§ μ λ΅μΌλ‘ μΈμ λμλ€. μμ§ Python3λ‘ ν΅κ³Όν μ μλ λ°©λ²μ μ°Ύμ§ λͺ»νμΌλ©°, νμ΄μ¬μΌλ‘ λ¬Έμ λ₯Ό λ§μΆ λ€λ₯Έ μ΄μ©μλ€λ λͺ¨λ PyPy3λ‘λ§ μ μΆν κ²μΌλ‘ 보μ ν΄λΉ μκ³ λ¦¬μ¦μ΄ μ΅μ μΈ κ² κ°λ€.
'Algorithm > π Baekjoon Judge' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ] λ°±μ€ 14503λ² λ‘λ΄ μ²μκΈ° - νμ΄μ¬(Python) (1) | 2022.01.07 |
---|---|
[BOJ] λ°±μ€ 17609λ² νλ¬Έ - νμ΄μ¬(Python) (0) | 2021.12.31 |
[BOJ] λ°±μ€ 2293λ² λμ 1 - νμ΄μ¬(Python) (0) | 2021.12.31 |
[BOJ] λ°±μ€ 3107λ² IPv6 - νμ΄μ¬(Python) (0) | 2021.12.29 |
[BOJ] λ°±μ€ 7562λ² λμ΄νΈμ μ΄λ - νμ΄μ¬(Python) (0) | 2021.12.29 |