์๋ ํ์ธ์! ์ค๋์ ๋ฐฑ์ค์ 14465๋ฒ ๋ฌธ์ ์ธ “์๊ฐ ๊ธธ์ ๊ฑด๋๊ฐ ์ด์ 5” ๋ฌธ์ ๋ฅผ ํจ๊ป ํ์ด๋ณด๊ฒ ์ต๋๋ค. ์ด ๋ฌธ์ ๋ ์ฐ์๋ ์ ํธ๋ฑ ๊ตฌ๊ฐ์์ ๊ณ ์ฅ๋ ์ ํธ๋ฑ์ ์๋ฅผ ์ต์ํํ๋ ๋ฌธ์ ์ ๋๋ค. ํจ๊ป ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด๋ณด๋๋ก ํ์ฃ !
1. ๋ฌธ์ ์ค๋ช
1) ์ ํธ๋ฑ์ ๊ฐ์(N), ์ฐ์๋ ์ ํธ๋ฑ์ ๊ฐ์(K), ๊ณ ์ฅ๋ ์ ํธ๋ฑ์ ๊ฐ์(B)๊ฐ ์ฃผ์ด์ง๋๋ค.
2) ๊ณ ์ฅ๋ ์ ํธ๋ฑ์ ์์น๊ฐ ์ฃผ์ด์ง๋๋ค.
3) K๊ฐ์ ์ฐ์๋ ์ ํธ๋ฑ ๊ตฌ๊ฐ์์ ๊ณ ์ฅ๋ ์ ํธ๋ฑ์ ์๋ฅผ ์ต์ํํด์ผ ํฉ๋๋ค.
๋ฌธ์ URL : https://www.acmicpc.net/problem/14465
2. ์ ๊ทผ๋ฒ
1) ์ ๋ ฅ๋ฐ๊ธฐ: ์ ํธ๋ฑ์ ๊ฐ์, ์ฐ์๋ ์ ํธ๋ฑ์ ๊ฐ์, ๊ณ ์ฅ๋ ์ ํธ๋ฑ์ ๊ฐ์์ ๊ณ ์ฅ๋ ์ ํธ๋ฑ์ ์์น๋ฅผ ์ ๋ ฅ๋ฐ์ต๋๋ค.
2) ๋์ ํฉ ๋ฐฐ์ด ์์ฑ: ๊ณ ์ฅ๋ ์ ํธ๋ฑ์ ์์น๋ฅผ ๋ฐ์ํ ํ, ๋์ ํฉ ๋ฐฐ์ด์ ๋ง๋ญ๋๋ค.
3) ์ต์ ๊ณ ์ฅ๋ ์ ํธ๋ฑ ์ ๊ณ์ฐ: ์ฐ์๋ K๊ฐ์ ์ ํธ๋ฑ ๊ตฌ๊ฐ์์ ๊ณ ์ฅ๋ ์ ํธ๋ฑ์ ์๋ฅผ ๊ณ์ฐํ์ฌ ์ต์๊ฐ์ ๊ตฌํฉ๋๋ค.
3. ์ ๋ต ์ฝ๋
import sys
input = sys.stdin.readline
# N: ์ ํธ๋ฑ์ ๊ฐ์, K: ์ฐ์๋ ์ ํธ๋ฑ์ ๊ฐ์, B: ๊ณ ์ฅ๋ ์ ํธ๋ฑ์ ๊ฐ์
N, K, B = map(int ,input().split())
# ์ ํธ๋ฑ ์ํ๋ฅผ ์ ์ฅํ ๋ฆฌ์คํธ (0: ์ ์, 1: ๊ณ ์ฅ)
sinho = [0] * N
# ๋์ ํฉ์ ์ ์ฅํ ๋ฆฌ์คํธ (0๋ฒ ์ธ๋ฑ์ค๋ 0์ผ๋ก ์ด๊ธฐํ)
psum = [0] * (N + 1)
# ๊ณ ์ฅ๋ ์ ํธ๋ฑ์ ์์น๋ฅผ ์
๋ ฅ๋ฐ์ ๋ฆฌ์คํธ์ ๋ฐ์
for _ in range(B):
num = int(input())
sinho[num-1] = 1 # ๊ณ ์ฅ๋ ์ ํธ๋ฑ ์์น๋ฅผ 1๋ก ํ์
# ๋์ ํฉ ๋ฐฐ์ด ์์ฑ (1๋ฒ ์ธ๋ฑ์ค๋ถํฐ ์์)
for i in range(1, N+1):
psum[i] = psum[i-1] + sinho[i-1]
# ๊ณ ์ณ์ผ ํ๋ ์ ํธ๋ฑ์ ๊ฐ์๋ฅผ ์ ์ฅํ ๋ฆฌ์คํธ
ans = []
# K๊ฐ์ ์ฐ์๋ ๊ตฌ๊ฐ์์ ๊ณ ์ฅ๋ ์ ํธ๋ฑ์ ์๋ฅผ ๊ณ์ฐ
for i in range(K, N+1):
ans.append(psum[i] - psum[i-K])
# ๊ฐ์ฅ ์์ ๊ณ ์ฅ๋ ์ ํธ๋ฑ์ ์๋ฅผ ์ถ๋ ฅ
print(min(ans))
4. ์ฝ๋ ์ค๋ช
1) ์ ๋ ฅ๋ฐ๋ ๋ถ๋ถ
• sys.stdin.readline์ ์ฌ์ฉํ์ฌ ์ ๋ ฅ ์๋๋ฅผ ๋์ ๋๋ค.
• ์ฒซ ๋ฒ์งธ ์ค์์ N(์ ํธ๋ฑ์ ๊ฐ์), K(์ฐ์๋ ์ ํธ๋ฑ์ ๊ฐ์), B(๊ณ ์ฅ๋ ์ ํธ๋ฑ์ ๊ฐ์)๋ฅผ ์ ๋ ฅ๋ฐ์ต๋๋ค.
• ๋ค์ ์ค์์ ๊ณ ์ฅ๋ ์ ํธ๋ฑ์ ์์น๋ฅผ ์ ๋ ฅ๋ฐ์ sinho ๋ฆฌ์คํธ์ ๋ฐ์ํฉ๋๋ค.
2) ๋์ ํฉ ๋ฐฐ์ด ์์ฑ
• sinho ๋ฆฌ์คํธ์ ๊ณ ์ฅ๋ ์ ํธ๋ฑ์ ์์น๋ฅผ 1๋ก ํ์ํฉ๋๋ค.
• psum ๋ฆฌ์คํธ๋ฅผ ์์ฑํ์ฌ ๊ฐ ์ธ๋ฑ์ค๊น์ง์ ๊ณ ์ฅ๋ ์ ํธ๋ฑ์ ์๋ฅผ ์ ์ฅํฉ๋๋ค.
3) ์ต์ ๊ณ ์ฅ๋ ์ ํธ๋ฑ ์ ๊ณ์ฐ
• ์ฐ์๋ K๊ฐ์ ์ ํธ๋ฑ ๊ตฌ๊ฐ์์ ๊ณ ์ฅ๋ ์ ํธ๋ฑ์ ์๋ฅผ ๊ณ์ฐํ์ฌ ans ๋ฆฌ์คํธ์ ์ ์ฅํฉ๋๋ค.
• ans ๋ฆฌ์คํธ์์ ๊ฐ์ฅ ์์ ๊ฐ์ ์ถ๋ ฅํ์ฌ, ๊ณ ์ณ์ผ ํ๋ ์ต์ ์ ํธ๋ฑ์ ์๋ฅผ ๊ตฌํฉ๋๋ค.
*****
์์๋ก ์ ๋ต์ฝ๋ ์ค๋ช
• ์ ํธ๋ฑ์ ๊ฐ์(N): 10
• ์ฐ์๋ ์ ํธ๋ฑ์ ๊ฐ์(K): 5
• ๊ณ ์ฅ๋ ์ ํธ๋ฑ์ ๊ฐ์(B): 3
• ๊ณ ์ฅ๋ ์ ํธ๋ฑ์ ์์น: 2, 4, 7
์ ํธ๋ฑ ์ด๊ธฐ ์ํ: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
๊ณ ์ฅ๋ ์ ํธ๋ฑ์ ์์น ๋ฐ์
๊ณ ์ฅ๋ ์ ํธ๋ฑ ์ํ: [0, 1, 0, 1, 0, 0, 1, 0, 0, 0]
๋์ ํฉ ๋ฐฐ์ด ์์ฑ
i=1: psum[1] = psum[0] + sinho[0] = 0 + 0 = 0
i=2: psum[2] = psum[1] + sinho[1] = 0 + 1 = 1
i=3: psum[3] = psum[2] + sinho[2] = 1 + 0 = 1
i=4: psum[4] = psum[3] + sinho[3] = 1 + 1 = 2
i=5: psum[5] = psum[4] + sinho[4] = 2 + 0 = 2
i=6: psum[6] = psum[5] + sinho[5] = 2 + 0 = 2
i=7: psum[7] = psum[6] + sinho[6] = 2 + 1 = 3
i=8: psum[8] = psum[7] + sinho[7] = 3 + 0 = 3
i=9: psum[9] = psum[8] + sinho[8] = 3 + 0 = 3
i=10: psum[10] = psum[9] + sinho[9] = 3 + 0 = 3
๋์ ํฉ ๋ฐฐ์ด
psum: [0, 0, 1, 1, 2, 2, 2, 3, 3, 3, 3]
์ต์ ๊ณ ์ฅ๋ ์ ํธ๋ฑ ์ ๊ณ์ฐ
K๊ฐ์ ์ฐ์๋ ๊ตฌ๊ฐ์์ ๊ณ ์ฅ๋ ์ ํธ๋ฑ์ ์ ๊ณ์ฐ
i=5: ans.append(psum[5] - psum[0]) = 2 - 0 = 2
i=6: ans.append(psum[6] - psum[1]) = 2 - 0 = 2
i=7: ans.append(psum[7] - psum[2]) = 3 - 1 = 2
i=8: ans.append(psum[8] - psum[3]) = 3 - 1 = 2
i=9: ans.append(psum[9] - psum[4]) = 3 - 2 = 1
i=10: ans.append(psum[10] - psum[5]) = 3 - 2 = 1
ans ๋ฆฌ์คํธ
ans: [2, 2, 2, 2, 1, 1]
*****
5. Github์ผ๋ก ํ์ธ
'๐ ์๊ณ ๋ฆฌ์ฆ > BOJ(๋ฐฑ์ค)_Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ(๋ฐฑ์ค) 1068[ํธ๋ฆฌ] (0) | 2024.07.07 |
---|---|
BOJ(๋ฐฑ์ค) 10819[์ฐจ์ด๋ฅผ ์ต๋๋ก] (0) | 2024.07.05 |
BOJ(๋ฐฑ์ค) 11728[๋ฐฐ์ด ํฉ์น๊ธฐ] (0) | 2024.07.01 |
BOJ(๋ฐฑ์ค) 1946[์ ์ ์ฌ์] (0) | 2024.06.28 |
BOJ(๋ฐฑ์ค) 14501[ํด์ฌ] (0) | 2024.06.25 |