์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ๊ทธ๋ํํ์
- ๋ฐฑ์ค
- ๋จธ์ง์ํธ
- ์ฐ์ ์์ํ
- ์ค๋ธ์
- ๋์ ํฉ
- db
- ์์๊ตฌํ๊ธฐ
- ๋๋น์ฐ์ ํ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ์๋ฃ๊ตฌ์กฐ
- ํ๋ก๊ทธ๋๋จธ์ค
- ์๊ณ ๋ฆฌ์ฆ
- DP
- ๊ตฌํ
- DFS
- LIS
- SQL
- ๊น์ด์ฐ์ ํ์
- ๊ทธ๋ํ
- ํ์ด์ฌ
- ์ํ
- BFS
- ๊ทธ๋ฆฌ๋
- ์์ํ์
- ๋์ ๊ณํ๋ฒ
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- ๋ณํฉ์ ๋ ฌ
- ์ ๋ ฌ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
๐๐ญ๐ฐ๐ธ ๐ฃ๐ถ๐ต ๐ด๐ต๐ฆ๐ข๐ฅ๐บ
[๊ตฌ๋ฆ] ๋์ด๊ณต์ - ํ์ด์ฌ ๋ณธ๋ฌธ
๋ฌธ์
๐ : https://level.goorm.io/exam/88520/๋์ด๊ณต์/quiz/1
์ด๋ ํ ๋์์์๋ ๊ณต์ฅ ๋ถ์ง๊ฐ ๋ถ๋๊ฐ ๋๊ฒ ๋์ด ๋์ ๊ณตํฐ๊ฐ ๊ฒฝ๋งค์ ์ฌ๋ผ์ค๊ฒ ๋์๋ค.
์ด ๊ณตํฐ๋ ๊ฐ๋ก์ ์ธ๋ก ๊ธธ์ด๊ฐ ๊ฐ๊ฐ N์ธ ์ ์ฌ๊ฐํ ๋ชจ์์ด๋ฉฐ, ๊ฐ๋ก์ ์ธ๋ก ๊ธธ์ด๊ฐ 1์ธ ์ ์ฌ๊ฐํ ๊ฒฉ์ ๋ชจ์์ผ๋ก ์์ญ์ ๋๋์ด ๊ฐ๋ณ์ ์ผ๋ก ํ๋งคํ๊ณ ์๋ค.
๊ทธ ๋์์ ์ด๊ณ ์๋ ํ ๋ถ์ ๊ฒฝ์์ธ์ ํ์ ์์ ์ด ๊ธฐํํด์ค๋ ๋์ด๊ณต์ ๊ฑด์ค ํ๋ก์ ํธ๋ฅผ ๋ชฐ๋๋ชฐ๋ ์งํํ๊ธฐ๋ก ๊ฒฐ์ ํ์๋ค. ๋๋ง์นจ ๊ฒฝ๋งค์ ์ฌ๋ผ์จ ์ด ๊ณตํฐ์ ๊ด์ฌ์ ๊ฐ์ง๊ฒ ๋ ๊ฒฝ์์ธ์ ํ๋งค ์ค์ธ ๋ ๋ค ์ค ์ผ๋ถ์ ๊ธฐ์กด์ ๊ณต์ฅ์์ ๋ฐฐ์ถ๋ ํ๊ธฐ๋ฌผ๋ค์ด ๋ฐฉ์น๋์ด ์๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์๋ค. ๋์ด๊ณต์ ๊ฑด์ค์ ์ํด์๋ ๊ฐ๋ก์ ์ธ๋ก ๊ธธ์ด๊ฐ K์ธ ์ ์ฌ๊ฐํ ๋ชจ์์ ์์ญ์ด ํ์ํ๋ฐ, ๋น์ฐํ ๋์ด๊ณต์ ๊ฑด์ค์ ์ํด์๋ ํด๋น ์์ญ์ ํ๊ธฐ๋ฌผ๋ค์ ๋ชจ๋ ์ฒ๋ฆฌํด์ผ๋ง ํ๋ค.
NxN ๊ฒฉ์ ๋ชจ์์ ๊ณตํฐ์์ KxK ํฌ๊ธฐ์ ๋ ์ ๊ตฌ๋งคํ๋ ค๊ณ ํ ๋, ๊ตฌ๋งคํ ๋ ์ ํฌํจ๋ ํ๊ธฐ๋ฌผ์ ์๋ฅผ ์ต์ํํ๋ ์์ญ์ ์ฐพ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ.
์์ ์ค๋ช
์ฒซ ๋ฒ์งธ ์์ ์์ ๊ณต์์ ์ ๋ณด๋ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ๊ณ , 3x3 ํฌ๊ธฐ์ ์์ญ์ ์ ํํด์ผ ํ๋ค.
๊ฐ์ด๋ฐ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํ๋์ ์์ญ์ ์ ํํ๋ฉด ์ธ ๊ฐ์ ํ๊ธฐ๋ฌผ์ ์ฒ๋ฆฌํด์ผ ํ์ง๋ง,
์ค๋ฅธ์ชฝ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ฃผํฉ์ ์์ญ์ ์ ํํ๋ฉด ํ ๊ฐ์ ํ๊ธฐ๋ฌผ๋ง ์ฒ๋ฆฌํ๋ฉด ๋๋ค.
๋ค๋ฅธ ์ด๋ค ์์ญ์ ๊ณจ๋ผ๋ ์ต์ ํ ๊ฐ ์ด์์ ํ๊ธฐ๋ฌผ์ ์ฒ๋ฆฌํด์ผ ํ๋ฏ๋ก, ๋ต์ผ๋ก๋ 1์ ์ถ๋ ฅํด์ผ ํ๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์๋ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค.
๊ฐ ํ ์คํธ ์ผ์ด์ค์ ์ ๋ ฅ์ ์๋์ ๊ฐ์ ํ์์ ๋ฐ๋ฅธ๋ค.
์ฒซ์งธ ์ค์๋ ๊ณตํฐ์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ N๊ณผ ๊ตฌ๋งคํ ๋ ์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ K๊ฐ ๊ณต๋ฐฑ์ ๋๊ณ ์ฃผ์ด์ง๋ค.
๋ค์ N๊ฐ์ ์ค์๋ ๊ณตํฐ์ ์ ๋ณด๋ฅผ ๋ํ๋ด๋ ์ ์๊ฐ ํ ์ค์ N๊ฐ์ฉ ๊ณต๋ฐฑ์ ๋๊ณ ์ฃผ์ด์ง๋ค. ์ฃผ์ด์ง๋ ์ ์๋ 0 ๋๋ 1์ด๋ฉฐ, 0์ ํด๋น ์นธ์ด ๋น์ด์์์, 1์ ํด๋น ์นธ์ ํ๊ธฐ๋ฌผ์ด ์์์ ์๋ฏธํ๋ค.
- 1 ≤ T ≤ 100
- 1 ≤ N ≤ 100
- 1 ≤ K ≤ M
- ์ ๋ ฅ์์ ์ฃผ์ด์ง๋ ์๋ ๋ชจ๋ ์ ์์ด๋ค.
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๋ํด, KxK ๋ชจ์์ ๋ ์ ๊ตฌ๋งคํ์ ๋ ์ฒ๋ฆฌํด์ผ ํ๋ ์ต์ ํ๊ธฐ๋ฌผ์ ์๋ฅผ ํ ์ค์ ํ๋์ฉ ์ถ๋ ฅํ๋ค.
์์ 1
์ ๋ ฅ
1
5 3
1 0 0 1 0
0 1 0 0 1
0 0 0 1 0
0 0 0 0 0
0 0 1 0 0
์ถ๋ ฅ
1
C++๋ก๋ ๋จ์ํ NxN์ ๋ฐฐ์ด ๋ด์์ KxK ๋งํผ ์๋์ฐ ์ฌ๋ผ์ด๋ฉ ํด๊ฐ๋ฉฐ ์ต์๊ฐ์ ์ฐพ์๋ ์๊ฐ์ด๊ณผ๊ฐ ์๊ฑธ๋ฆฌ์ง๋ง,
ํ์ด์ฌ์ผ๋ก๋ ๊ทธ๋ ๊ฒ ํ์๋ค๊ฐ๋ ํ ์คํธ์ผ์ด์ค์ ๋ฐ๋ ๋ชป๋ง์ถ๋ค.
๋์ ํฉ์ ์ด์ฉํด์ ํ์ด์ผ ํ๋ ๋ฌธ์ .
๋์ ํฉ ์๊ณ ๋ฆฌ์ฆ ์ค๋ช : https://miiinnn23.tistory.com/106
๋จ์ํ ๊ณต์์ ์๋ ํ๊ธฐ๋ฌผ์ ์์ ๋์ ํฉ์ ๋ฐฐ์ด์ ์ ์ฅํ๊ณ ,
์ฒ์๋ถํฐ ๋๊น์ง ๋์์ฃผ๋ฉด์ KxK ๊ตฌ์ญ ๋ด ์ต์ ํฉ์ ์ฐพ์ผ๋ฉด ๋๋ค.
C++๋ก๋ ๋์ ํฉ ์จ์ ๋ค์ ํ์ด๋ดค๋๋ฐ, CPU ๊ณ์ฐ ์๊ฐ์ด๋ ์คํ์๊ฐ์ ํ์ธํด๋ณด๋ฉด ํ์ฐํ๊ฒ ์๊ฐ์ฐจ์ด๊ฐ ๋ฐ์ํ๋ค.
์ฝ๋ ์์ ์ -> ์ฝ๋ ์์ ํ
์ฝ๋
# using prefix sum
T = int(input())
for _ in range(T):
N, K = map(int, input().split())
board = [list(map(int, input().split())) for _ in range(N)]
prefix_sum = [[0] * (N + 1) for _ in range(N + 1)]
for i in range(1, N + 1):
for j in range(1, N + 1):
prefix_sum[i][j] = (board[i - 1][j - 1]
+ prefix_sum[i - 1][j]
+ prefix_sum[i][j - 1]
- prefix_sum[i - 1][j - 1]) # ๊ฒน์น๋ ๋ถ๋ถ ์ ์ธ
answer = N * N
for y in range(N - K + 1):
for x in range(N - K + 1):
total = (prefix_sum[y + K][x + K]
- prefix_sum[y][x + K]
- prefix_sum[y + K][x]
+ prefix_sum[y][x])
answer = min(answer, total)
print(answer)
'์ฝ๋ฉํ ์คํธ ์ค๋น' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๊ตฌ๋ฆ] ๊ตฌ๋ฆ๊ณต์ - ํ์ด์ฌ (0) | 2024.11.07 |
---|