-
[๋ฐฑ์ค] 13565 ์นจํฌ with PythonPS 2022. 2. 19. 18:10728x90๋ฐ์ํ
๐ BOJ 13565 ์นจํฌ
๐ก ์กฐ๊ฑด
๊ฒฉ์์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ M (2 โค M โค 1,000) ๊ณผ N (2 โค N โค 1,000)
M์ค์ ๊ฑธ์ณ์, N๊ฐ์ 0 ๋๋ 1 ์ด ๊ณต๋ฐฑ ์์ด ์ฃผ์ด์ง๋ค. 0์ ์ ๋ฅ๊ฐ ์ ํตํ๋ ํฐ์, 1์ ์ ๋ฅ๊ฐ ํตํ์ง ์๋ ๊ฒ์์ ๊ฒฉ์์์ ๋ปํ๋ค.
๋งจ ์์ค์์ ๋ฐ์ ์ ๊ธฐ๊ฐ ๋งจ ๋ฐ ์ค๊น์ง ๊ฐ ์ ์๋ค๋ฉด True, ์๋๋ฉด False
BFS ์ ํ์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
from sys import stdin from collections import deque n, m = map(int, stdin.readline().split()) board = [] visited = set() for _ in range(n): board.append(list(map(int, list(stdin.readline().rstrip())))) dx, dy = [0, 0, -1, 1], [1, -1, 0, 0] res_tf = False def bfs(x, y): q = deque() q.append((x, y)) visited.add((x, y)) while q: x, y = q.popleft() if x == n - 1: return True for i in range(4): nx, ny = dx[i] + x, dy[i] + y if -1 < nx < n and -1 < ny < m and (nx, ny) not in visited: if board[nx][ny] == 0: q.append((nx, ny)) visited.add((nx, ny)) for j in range(m): if board[0][j] == 0 and (0, j) not in visited: if bfs(0, j) is True: res_tf = True break print('YES') if res_tf else print('NO')
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
5 6 010101 010000 011101 100011 001011
์คํ๊ฒฐ๊ณผ
NO
โจ๏ธ ๋ฌธ์ ํ์ด
์ ๋ฅํ์ board ๋ฆฌ์คํธ์ ์ ๋ ฅ๋ฐ์ ์ ์ฅํฉ๋๋ค.
๋ฐฉ๋ฌธ์ฒ๋ฆฌ๋ฅผ ํ visited ๋ฅผ set() ์๋ฃํ์ผ๋ก ์์ฑํฉ๋๋ค.bfs ํจ์๋ ๋๋น์ฐ์ ํ์์ ๋ก์ง์ ๊ธฐ๋ณธ์ ์ผ๋ก๋ง ๊ตฌํํ ํํ์ ๋๋ค.
์ํ์ข์ฐ๋ก ์์ง์ด๋ฉด์ ํ์ ๋ค์ ์ด๋ํ ์ขํ๋ฅผ ๋ฃ์ผ๋ฉฐ, ์ด๋ํ ์ ์๋ ์ขํ๋ฅผ ํ์ ๋ฃ์์ ๋ visited ์ ๋ฃ์ด์ค๋๋ค.
๋ง์ฝ n - 1 ๊ณผ ํ์ฌ ํ์์ ๋ฝ์ x ์ขํ์ ๊ฐ์ด ๊ฐ๋ค๋ฉด ๋งจ ๋ฐ์ผ๋ก ์ ๋ฅ๊ฐ ์ ๋ฌ ๋ ๊ฒ์ด๋ true ๋ฅผ ๋ฐํํฉ๋๋ค.
์๋๋ผ๋ฉด None ์ด ๋ฐํ๋ฉ๋๋ค.๊ฐ์ฅ ์์ค์ ๋ณผ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ m๋งํผ ์ํ๋ฅผ ์์ํฉ๋๋ค.(j)
borad[0][i] ๊ฐ 0์ด๊ณ (0, j) ์ขํ๊ฐ ์ด๋ฏธ ๊ฒ์ฌํ ์ขํ๊ฐ ์๋๋ผ๋ฉด bfs์ ๋ฃ์ต๋๋ค.bfs์ ๊ฒฐ๊ณผ ๊ฐ์ด true๊ฐ ๋ฐํ๋์๋ค๋ฉด res_tf ๋ฅผ true๋ก ๊ฐฑ์ ํ๊ณ ์ํ๋ฅผ ์ข ๋ฃํฉ๋๋ค.
res_tf ๊ฐ true ๋ผ๋ฉด YES, ์๋๋ผ๋ฉด NO ๋ฅผ ์ถ๋ ฅํฉ๋๋ค
๐พ ๋๋์
- ๊ฐ๋จํ ๋๋น์ฐ์ ํ์์ ๋ฌธ์ ์์ต๋๋ค.
๋ฐ์ํ'PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 19941 ํ๋ฒ๊ฑฐ ๋ถ๋ฐฐ with Python (0) 2022.02.20 [๋ฐฑ์ค] 15970 ํ์ดํ ๊ทธ๋ฆฌ๊ธฐ with Python (0) 2022.02.20 [๋ฐฑ์ค] 11048 ์ด๋ํ๊ธฐ with Python (0) 2022.02.19 [๋ฐฑ์ค] 9663 N-Queen with Python (0) 2022.02.14 [๋ฐฑ์ค] 2477 ์ฐธ์ธ๋ฐญ with Python (0) 2022.02.14