μλ νμΈμ! μ€λμ λ°±μ€ μ¨λΌμΈ μ μ§μ λ¬Έμ λ²νΈ 2559λ²μ νμ΄λ³΄κ² μ΅λλ€. μ΄ λ¬Έμ λ μ£Όμ΄μ§ μ¨λ 리μ€νΈμμ μ°μλ KμΌ λμμ μ¨λμ ν©μ΄ μ΅λκ° λλ κ°μ μ°Ύλ λ¬Έμ μ λλ€.
λ¬Έμ URL: https://www.acmicpc.net/problem/2559
1. λ¬Έμ μ€λͺ
μ£Όμ΄μ§ μ¨λ 리μ€νΈμμ μ°μλ KμΌ λμμ μ¨λμ ν©μ΄ μ΅λκ° λλ κ°μ μ°Ύλ λ¬Έμ μ λλ€. μ£Όμ΄μ§ μ¨λ 리μ€νΈμμ μ°μλ KμΌ λμμ μ¨λμ ν©μ΄ μ΅λκ° λλ κ°μ κ³μ°ν΄μΌ ν©λλ€.
2. μ κ·Όλ²
1. κ° ν μ€νΈ μΌμ΄μ€λ§λ€ μ¨λ 리μ€νΈκ° μ£Όμ΄μ§λλ€.
2. μ°μλ KμΌ λμμ μ¨λμ ν©μ κ³μ°νμ¬ μ΅λκ°μ μ°Ύμ΅λλ€.
3. λμ ν©(prefix sum)μ μ΄μ©νμ¬ ν¨μ¨μ μΌλ‘ κ³μ°ν©λλ€:
• μ¨λ 리μ€νΈμ λμ ν©μ κ³μ°ν©λλ€.
• λμ ν©μ μ΄μ©νμ¬ KμΌκ°μ ν©μ ꡬνκ³ , κ·Έ μ€ μ΅λκ°μ μ°Ύμ΅λλ€.
3. μ λ΅ μ½λ
import sys
input = sys.stdin.readline
# 첫 λ²μ§Έ μ€μμ Nκ³Ό Kλ₯Ό μ
λ ₯λ°μ
N, K = map(int, input().split())
# μΈ‘μ ν μ¨λλ₯Ό 리μ€νΈλ‘ μ
λ ₯λ°μ
arr = list(map(int, input().split()))
# λμ ν©μ λ΄μ 리μ€νΈ μ μΈ, κΈΈμ΄λ N+1λ‘ μ€μ
prefix = [0] * (N + 1)
# λμ ν© κ³μ°
for i in range(N):
prefix[i + 1] = prefix[i] + arr[i]
# μ΅λ ν©μ μ°ΎκΈ° μν 리μ€νΈ μ μΈ
ans = []
# KμΌκ°μ ν©μ ꡬν΄μ 리μ€νΈμ μΆκ°
for i in range(K, len(prefix)):
ans.append(prefix[i] - prefix[i - K])
# μ΅λ ν© μΆλ ₯
print(max(ans))
4. μ½λ μ€λͺ
1. μ λ ₯ μ²λ¦¬
• 첫 λ²μ§Έ μ€μμ Nκ³Ό Kλ₯Ό μ λ ₯λ°μ΅λλ€.
• λ λ²μ§Έ μ€μμ Nκ°μ μ¨λλ₯Ό μ λ ₯λ°μ 리μ€νΈλ‘ μ μ₯ν©λλ€.
2. λμ ν©(prefix sum) κ³μ°
• μ¨λ 리μ€νΈμ λμ ν©μ κ³μ°νμ¬ prefix 리μ€νΈμ μ μ₯ν©λλ€.
• prefix[i]λ arr 리μ€νΈμ 0λ²λΆν° i-1λ²κΉμ§μ μμμ ν©μ λνλ λλ€.
3. KμΌκ°μ ν© κ³μ°
• prefix 리μ€νΈλ₯Ό μ΄μ©νμ¬ μ°μλ KμΌκ°μ ν©μ ꡬν©λλ€.
• prefix[i] - prefix[i - K]λ i-KλΆν° i-1κΉμ§μ μμμ ν©μ λνλ λλ€.
4. μ΅λ ν© κ³μ°
• KμΌκ°μ ν© μ€ μ΅λκ°μ μ°Ύμ μΆλ ₯ν©λλ€.
5. GithubμΌλ‘ νμΈ
'π μκ³ λ¦¬μ¦ > BOJ(λ°±μ€)_Python' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
BOJ(λ°±μ€) 2304[μ°½κ³ λ€κ°ν] (0) | 2024.06.17 |
---|---|
BOJ(λ°±μ€) 1912[μ°μν©] (0) | 2024.06.17 |
BOJ(λ°±μ€) 7795[λ¨Ήμ κ²μΈκ° λ¨Ήν κ²μΈκ°] (0) | 2024.06.16 |
BOJ(λ°±μ€) 14252[곡μ½μμ΄] (0) | 2024.06.15 |
BOJ(λ°±μ€) 1978[μμ μ°ΎκΈ°] (0) | 2024.06.13 |