PS
[λ°±μ€] 2143 λ λ°°μ΄μ ν© with Python
νμ€_It's
2021. 10. 12. 00:00
728x90
λ°μν
π BOJ 2143 λ λ°°μ΄μ ν©
π‘ 쑰건 λ° νμ΄
(-1,000,000,000 β€ T β€ 1,000,000,000)
(1 β€ n β€ 1,000)
(1 β€ m β€ 1,000)
- λμ ν© μ νμ λ¬Έμ
- λ λ°°μ΄μ λΆλΆλ°°μ΄μ μ¬μ©νμ¬ ν©μ ꡬν΄
T
λ₯Ό λ§λ€ μ μλ κ°μλ₯Ό ꡬνλ€.
π₯ μμ€ μ½λ
from sys import stdin, setrecursionlimit
setrecursionlimit(int(1e9))
t = int(stdin.readline())
n = int(stdin.readline())
A = list(map(int, stdin.readline().split()))
m = int(stdin.readline())
B = list(map(int, stdin.readline().split()))
Asum = {}
for i in range(n):
for j in range(i, n):
k = sum(A[i:j + 1])
if k in Asum:
Asum[k] += 1
else:
Asum[k] = 1
Bsum = {}
for i in range(m):
for j in range(i, m):
k = sum(B[i:j + 1])
if k in Bsum:
Bsum[k] += 1
else:
Bsum[k] = 1
res = 0
for key in Asum.keys():
if (t - key) in Bsum:
res += Bsum[t - key] * Asum[key]
print(res)
π μμ λ° μ€νκ²°κ³Ό
μμ
5
4
1 3 1 2
3
1 3 2
μ€νκ²°κ³Ό
7
β¨οΈ λ¬Έμ νμ΄
- A λΆλΆ λ°°μ΄μ ν©λ€κ³Ό B λΆλΆ λ°°μ΄μ ν©λ€μ λν΄ Tκ° λ§λ€μ΄μ§λ κ²½μ°μ μλ₯Ό ꡬνλ λ¬Έμ μλ€.
- λ λ°°μ΄μ κ° κ΅¬κ°μ ν΄λΉνλ λμ ν©μ κ°κ°μ dict μλ£κ΅¬μ‘°μ λ£κ³ , μ€λ³΅λμ΄ λμ€λ κ²½μ° +1 μ ν΄μ€λ€.
- A λ°°μ΄μ ν€ κ°μ μμ°¨μ μΌλ‘ μννλ©΄μ
ꡬνκ³ μ νλ t κ°μμ A λ°°μ΄μ ν€ κ°μ λΉΌμ€ κ°μ΄ Bλ°°μ΄μ ν€κ°μΌλ‘ μλ€λ©΄,
resμ ν΄λΉ Bλ°°μ΄μ κ°κ³Ό Aλ°°μ΄μ κ°μ κ³±νμ¬ λν΄μ€λ€.for key in Asum.keys(): if (t - key) in Bsum: res += Bsum[t - key] * Asum[key]
πΎ λλμ
- μ²μμ μμ΄λμ΄κ° λ μ€λ₯΄μ§μμ νλ€μ΄νλ€.
- μν, DPκ° μ μΌ μ½ν κ² κ°λ€λ μκ°μ΄ λ€μλ€.
- Dict μλ£κ΅¬μ‘°λ₯Ό μ’μνλλ° μ΄λ κ² μ¬μ©μ ν΄λ΄μ λ μ’μλ€.
λ°μν