โ๏ธ ๋ฌธ์ ์์ฝ
- ํญ์ ํ์์ธ N์ ๋ํด, N * N ๊ฒฉ์ํ์ด ์ฃผ์ด์ง ๋, ๋ค์ด์๋ชฌ๋ ๋ชจ์์ ๊ฒฉ์์ ํฉ์ ๊ตฌํ์ฌ๋ผ.
๐ช ๋ฌด์ํ๊ฒ ํ๊ธฐ (๋ฐ๋ณต๋ฌธ)
N = int(input())
board = [list(map(int, input().split())) for _ in range(N)]
ans = 0
src, dst = N//2, N//2
for i in range(N//2 + 1):
for j in range(src, dst+1):
ans += board[i][j]
src, dst = src-1, dst+1
src, dst = 1, N-2
for i in range(N//2 + 1, N):
for j in range(src, dst+1):
ans += board[i][j]
src, dst = src+1, dst-1
print(ans)
โจ ์ฐ์ํ๊ฒ ํ๊ธฐ (BFS)
- BFS๋ฅผ ์ฌ์ฉํ๋ฉด, ๋ค์ด์๋ชฌ๋ ๋ชจ์์ผ๋ก ์งํํ๋ค.
- ๋ฐ๋ผ์ ํ(queue)์ ๊ฒฉ์ํ์ ์ค์ฌ์ ๋ด๊ณ , BFS๋ฅผ ์ ์ฉํ์ฌ ๋ค์ด์๋ชฌ๋ ๋ชจ์์ผ๋ก ์งํํ์!
- BFS๋ฅผ ์ธ์ ๊น์ง ์ ์ฉํด์ผํ ๊นโ
- BFS์ ํ์ฌ ๋ ๋ฒจ(`L`)์ ๋ด๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ ๋ ๋ฒจ(`L+1`)์ด `N//2`๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๋์๋ง ํ์ ๋ฃ๋๋ค.
- ๋ฐฉ๋ฌธ(`visited`) ๋ฆฌ์คํธ๋ฅผ ๋๊ณ , ๋ฐฉ๋ฌธํ ์ขํ์ ๋ ๋ค์ ๋ฐฉ๋ฌธํ์ง ์๋๋ก ํ๋ค.
- ๋ค์ด์๋ชฌ๋ ๋ชจ์์ ๊ฒฉ์์ ํฉ์ ๊ตฌํ๊ธฐ ์ํด์๋, ๋ฐฉ๋ฌธํ ์ขํ์ ํด๋นํ๋ ๊ฐ์ `tot`์ ๋์ ํด์ผ ํ๋ค.
from collections import deque
N = int(input())
lst = [list(map(int, input().split())) for _ in range(N)]
visited = [[0] * N for _ in range(N)]
q = deque()
q.append((0, N//2, N//2)) # (๋ ๋ฒจ, x์ขํ, y์ขํ)
visited[N//2][N//2] = 1 # ๋ฐฉ๋ฌธ
tot = lst[N//2][N//2] # ํฉ
dx, dy = [0,-1,0,1], [1,0,-1,0]
while q:
L, x, y = q.popleft()
for w in range(4):
LL, xx, yy = L+1, x+dx[w], y+dy[w]
if LL > N // 2: continue # ๋ ๋ฒจ์ด N//2๋ณด๋ค ํฌ๋ฉด stop
if xx < 0 or xx >= N or yy < 0 or yy >= N: continue
if visited[xx][yy] == 1: continue
visited[xx][yy] = 1 # ๋ฐฉ๋ฌธ
tot += lst[xx][yy] # ํฉ
q.append((LL, xx, yy))
print(tot)
'๐ซ ETC > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SWEA] 1928. Base64 Decoder (2) | 2023.11.14 |
---|---|
[SWEA] 2001. ํ๋ฆฌ ํด์น (DP) (2) | 2023.11.09 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ณผ์ ์งํํ๊ธฐ (0) | 2023.09.27 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ (0) | 2023.09.25 |
[ํ๋ก๊ทธ๋๋จธ์ค] [1์ฐจ] ์ ํ๋ฒ์ค (0) | 2023.09.23 |