๋ฌธ์ ๐
NxN ํฌ๊ธฐ์ ๋ฏธ๋ก์์ ์ถ๋ฐ์ง์์ ๋ชฉ์ ์ง์ ๋์ฐฉํ๋ ๊ฒฝ๋ก๊ฐ ์กด์ฌํ๋์ง ํ์ธํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. 4
๋์ฐฉํ ์ ์์ผ๋ฉด 1, ์๋๋ฉด 0์ ์ถ๋ ฅํ๋ค.
์ฃผ์ด์ง ๋ฏธ๋ก ๋ฐ์ผ๋ก๋ ๋๊ฐ ์ ์๋ค.
๋ค์์ 5x5 ๋ฏธ๋ก์ ์์ด๋ค.
13101
10101
10101
10101
10021
๋ง์ง๋ง ์ค์ 2์์ ์ถ๋ฐํด์ 0์ธ ํต๋ก๋ฅผ ๋ฐ๋ผ ์ด๋ํ๋ฉด ๋งจ ์์ค์ 3์ ๋์ฐฉํ ์ ์๋์ง ํ์ธํ๋ฉด ๋๋ค.
[์
๋ ฅ]
์ฒซ ์ค์ ํ
์คํธ ์ผ์ด์ค ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค. 1<=T<=50
๋ค์ ์ค๋ถํฐ ํ ์คํธ ์ผ์ด์ค์ ๋ณ๋ก ๋ฏธ๋ก์ ํฌ๊ธฐ N๊ณผ N๊ฐ์ ์ค์ ๊ฑธ์ณ ๋ฏธ๋ก์ ํต๋ก์ ๋ฒฝ์ ๋ํ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. 0์ ํต๋ก, 1์ ๋ฒฝ, 2๋ ์ถ๋ฐ, 3์ ๋์ฐฉ์ด๋ค. 5<=N<=100
[์ถ๋ ฅ]
๊ฐ ์ค๋ง๋ค "#T" (T๋ ํ ์คํธ ์ผ์ด์ค ๋ฒํธ)๋ฅผ ์ถ๋ ฅํ ๋ค, ๊ณ์ฐ๊ฒฐ๊ณผ๋ฅผ ์ ์๋ก ์ถ๋ ฅํ๊ฑฐ๋ ๋๋ ‘error’๋ฅผ ์ถ๋ ฅํ๋ค.
๋ด ํ๐ฆท
# 4875. ๋ฏธ๋ก
# ์ถ๋ฐ์ง์์ ๋ชฉ์ ์ง์ ๋์ฐฉํ๋ ๊ฒฝ๋ก๊ฐ ์กด์ฌํ๋์ง ํ์ธ
# ์ฌ๋ฐฉ ํ์
dx = [0, 1, 0, -1] # ๋ฒ์ ์ ๋๋ก ํ์ธ
dy = [-1, 0, 1, 0]
def miro(i, j):
global result # ๊ฒฐ๊ณผ๊ฐ ์ ์ญ๋ณ์๋ก ์ค์ ํด์ฃผ๊ธฐ
visited[i][j] = True # ๋ฐฉ๋ฌธํ ๊ณณ true๋ก ๋ฐ๊ฟ์ฃผ๊ธฐ
for k in range(4): # ์ฌ๋ฐฉํ์ ์งํ
di = i + dx[k]
dj = j + dy[k] # ํ๋ํ๋ ์ ๊ฒฝ์จ์ ์ ๊ธฐ
if 0 <= di < N and 0 <= dj < N and not visited[di][dj]:
# 0์ด๋ผ ๊ฐ์ ์๋๋ฐ ์์ง ๋ฐฉ๋ฌธ์ ์ํ๋ค๋ฉด ์๋กญ๊ฒ ๊ทธ ์ง์ ์ ๋ค์ ๋ฐฉ๋ฌธํด์ผ ํ๋๊น ์ฌ๊ท
if arr[di][dj] == 0:
miro(di, dj) # ์ฌ๊ท๋^^;;;;;
# 3 ๋์ฐฉํ๋ฉด ์ฑ๊ณต
elif arr[di][dj] == 3:
result = 1 # ๊ฒฐ๊ณผ๊ฐ ์ฑ๊ณต์ผ๋ก ๋ฐ๊พธ๊ธฐ
break
T = int(input())
for tc in range(1, T + 1):
N = int(input()) # ๋ฏธ๋ก์ ํฌ๊ธฐ
arr = [list(map(int, input().strip())) for _ in range(N)]
# ๋ฐฉ๋ฌธ ๊ฒ์ฌ
visited = [[False for _ in range(N)] for _ in range(N)]
result = 0 # ๊ฒฐ๊ณผ๊ฐ (์ผ๋จ ์คํจ)
for i in range(N-1, -1, -1):
for j in range(N-1, -1, -1):
if arr[i][j] == 2:
miro(i, j) # ํจ์์ ์์์ ๋ฃ์ด์ฃผ๊ธฐ
print(f'#{tc} {result}')
๋ด๊ฐ ์ ๋ชป ํ์๋ ์ ...
1. ์ฌ๋ฐฉ ํ์ ๋ฒ์ ํ์ธ!!! : ์๋ชป ์ ์๋๋์.. ๊ผญ ํ์ธํ๊ณ ์ ๊ธฐ;;;
2. Runtime error : strip()์ ์ฌ์ฉํด ์ฃผ์ด์ผ ํ๋ค๊ณ ๊ทธ๋ฌ๋๋ฐ...
์ฐ๋ฆฌ ๋์๋ ์ ๋ณด์ด์ง๋ง \n ์ด ํฌํจ ๋์ด ์์์ง๋ ๋ชจ๋ฅธ๋ค๊ณ ํ๋ค์....
๊ทธ๋ฆฌ๊ณ input()์ ์์์ ๊ณต๋ฐฑ์ ์ ๊ฑฐํด์ฃผ์ง๋ง
sys๋ฅผ ์ฌ์ฉํ ๋๋ ๊ทธ๋ฐ ๊ธฐ๋ฅ์ด ์์ด์sys.stdin.readline().strip() ๊ฐ์ด ๋ฌด์กฐ๊ฑด ์จ์ค์ผ ํ๋ฐ์!! ๐ต๐ซ
์ฐธ๊ณ ํจ๋ฉด ์ข์ ๊ฐ๋ ๋ค โ๏ธ
1) ํ์
: ๋ง์ ์์ ๋ฐ์ดํฐ ์ค์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๊ณผ์
ex) DFS, BFS
2) DFS(๊น์ด ์ฐ์ ํ์)
- ์คํ ์๋ฃ๊ตฌ์กฐ์ ๊ธฐ์ดํ๋ค..
- ์ค์ฌ๋ก๋ ์คํ๋ณด๋ค๋ ์ฌ๊ท ํจ์๋ฅผ ์ด์ฉํ์ฌ ๊ฐ๊ฒฐํ๊ฒ(?) ๊ตฌํํ ์ ์๋ค
- ์๊ฐ ๋ณต์ก๋ : O(N)
# dfs & ์ฌ๊ท ํจ์
def dfs(v): # v : ์์์
global visited, graphs # ํจ์ ์์์ ๋ง๋ค์ด์ค๊ฒ ์๋๋ผ ์์ ์ฑ์ ์ํด ์ ์ญ๋ณ์๋ก ์ค์ ํด์ฃผ์๋ค
visited[v] = True
for i in graphs[v]: # ์ธ์ ํด ์๋ ๊ณณ ์ค์
if not visited[i]: # ๋ฐฉ๋ฌธ์ ์ํ๋ค๋ฉด
dfs(i) # ๊ทธ ๊ณณ์ ํ์!!
else:
continue # ์ด๋ฏธ ๋ฐฉ๋ฌธํ ๊ณณ ํจ์ค # ์ด ๋ถ๋ถ ์ ์ ์ด์ค๋ ๋๋ค
graph = [] # ๊ทธ๋ํ๋ฅผ ํํํ๋ ์ธ์ ๋ฆฌ์คํธ(์ธ์ ํ๋ ฌ ์ด๋ ค์ ใ
ใ
)
visited = [] # ๊ฐ ๋
ธ๋๊ฐ ๋ฐฉ๋ฌธ๋ ์ ๋ณด๋ฅผ ํํํ๋ 1 ์ฐจ์ ๋ฆฌ์คํธ(true, flase/ 0,1๋ก ๊ตฌ๋ฌธ)
dfs(0)
=> ๊ฒฝ๋ก๊ฐ ์๋์ง ํ์ธํ ๋๋ dfs ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ข๋ค๊ณ ํ๋ค์..
'algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 1193. ๋ถ์ ์ฐพ๊ธฐ (1) | 2023.08.28 |
---|---|
๋ฐฑ์ค 24444. ์๊ณ ๋ฆฌ์ฆ ์์ - ๋๋น ์ฐ์ ํ์ 1 (BFS) (0) | 2023.08.19 |
swea 4874. Forth (ํ์ ํ๊ธฐ๋ฒ ๊ณ์ฐํ๊ธฐ) (0) | 2023.08.19 |
๋ฐฑ์ค 1920. ์์ฐพ๊ธฐ (set(), Binary Search) (0) | 2023.08.15 |
swea 4875. ๋ฏธ๋ก(dfs & ๋ธํ ํ์) (0) | 2023.08.15 |