-
[Python] ๋ฐฑ์ค 2178 ๋ฏธ๋ก ํ์ (BFS)๐ป Algorithm/Python 2022. 7. 2. 15:36
๐ ๋ฌธ์
N×Mํฌ๊ธฐ์ ๋ฐฐ์ด๋ก ํํ๋๋ ๋ฏธ๋ก๊ฐ ์๋ค.
1 0 1 1 1 1
1 0 1 0 1 0
1 0 1 0 1 1
1 1 1 0 1 1
๋ฏธ๋ก์์ 1์ ์ด๋ํ ์ ์๋ ์นธ์ ๋ํ๋ด๊ณ , 0์ ์ด๋ํ ์ ์๋ ์นธ์ ๋ํ๋ธ๋ค. ์ด๋ฌํ ๋ฏธ๋ก๊ฐ ์ฃผ์ด์ก์ ๋, (1, 1)์์ ์ถ๋ฐํ์ฌ (N, M)์ ์์น๋ก ์ด๋ํ ๋ ์ง๋์ผ ํ๋ ์ต์์ ์นธ ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ํ ์นธ์์ ๋ค๋ฅธ ์นธ์ผ๋ก ์ด๋ํ ๋, ์๋ก ์ธ์ ํ ์นธ์ผ๋ก๋ง ์ด๋ํ ์ ์๋ค.์์ ์์์๋ 15์นธ์ ์ง๋์ผ (N, M)์ ์์น๋ก ์ด๋ํ ์ ์๋ค. ์นธ์ ์ ๋์๋ ์์ ์์น์ ๋์ฐฉ ์์น๋ ํฌํจํ๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋ ์ ์ N, M(2 ≤ N, M ≤ 100)์ด ์ฃผ์ด์ง๋ค. ๋ค์ N๊ฐ์ ์ค์๋ M๊ฐ์ ์ ์๋ก ๋ฏธ๋ก๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ๊ฐ์ ์๋ค์ ๋ถ์ด์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ง๋์ผ ํ๋ ์ต์์ ์นธ ์๋ฅผ ์ถ๋ ฅํ๋ค. ํญ์ ๋์ฐฉ์์น๋ก ์ด๋ํ ์ ์๋ ๊ฒฝ์ฐ๋ง ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ค.
์์ ์ ๋ ฅ 1
4 6
101111
101010
101011
111011์์ ์ถ๋ ฅ 1
15
์์ ์ ๋ ฅ 2
4 6
110110
110110
111111
111101์์ ์ถ๋ ฅ 2
9
์์ ์ ๋ ฅ 3
2 25
1011101110111011101110111
1110111011101110111011101์์ ์ถ๋ ฅ 3
38
์์ ์ ๋ ฅ 4
7 7
1011111
1110001
1000001
1000001
1000001
1000001
1111111์์ ์ถ๋ ฅ 4
13
๐ ํ์ด
๐ฌ Code
import sys from collections import deque input = sys.stdin.readline def bfs(x, y): q = deque([(x-1, y-1)]) while q: x, y = q.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0 <= nx < n and 0 <= ny < m and maze[nx][ny] == 1: q.append((nx, ny)) maze[nx][ny] += maze[x][y] return maze[n-1][m-1] if __name__ == '__main__': n, m = map(int, input().split()) maze = [] for _ in range(n): maze.append(list(map(int, input().rstrip()))) # ๋ฐฉํฅ๋ฒกํฐ (์, ํ, ์ข, ์ฐ) dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] print(bfs(1, 1))
๐ก Solution
์ด์ฝํ ์์ ์์ ๋ก ๋์๋ ๋ฌธ์ ๋ผ ์ฝ๊ฒ ํ์ ์์์ต๋๋ค.
- ์ขํ๊ฐ ์ฃผ์ด์ง๋ฉด ํด๋น ์ขํ์ ์ํ์ข์ฐ ์ขํ๋ก ์ด๋ํ ์ ์๋์ง ๊ฐ๊ฐ ์ฒดํฌํ๊ธฐ ์ํด ์ขํ๋ง๋ค for๋ฌธ์ 4๋ฒ ๋๋ฆฝ๋๋ค.
- nx, ny๋ ์ด๋์ขํ๋ฅผ ๋ํ๋ธ๋ค. ์ด๋์ขํ๊ฐ (-1, -1)์ฒ๋ผ ์ขํ๋ฅผ ๋ฒ์ด๋์ง ์์๊ณ ํด๋น ์ขํ์ ๋์ธ ๊ฐ์ด 1์ด๋ผ๋ฉด ๊ทธ ๊ณณ์ผ๋ก ์ด๋ํ ์ ์๋ ๊ฒ์ด๋ฏ๋ก ์ด๋ ํ ํ์ (nx, ny)์์ ๋ฃ์ด์ค๋๋ค.
- ์ง๋์ผ ํ๋ ์ต์ ์นธ์๋ฅผ ๊ตฌํด์ผ ํ๋ฏ๋ก ์ด๋ํ ๋๋ง๋ค ์ด๋์นธ์๋ฅผ ๋์ ์ํต๋๋ค. maze[x][y]์์ maze[nx][ny]๋ก์ ์ด๋์นธ์๋ 1์นธ์ธ๋ฐ, maze[nx][ny]์ ๊ฐ์ด ์ด๋ฏธ 1์ด๊ธฐ ๋๋ฌธ์ maze[nx][ny] += maze[x][y] ํด์ฃผ๋ฉด maze[nx][ny]์ ์ฌํ๊น์ง ์ง๋์จ ์นธ์๊ฐ ์ ๋ ฅ๋ฉ๋๋ค.
- ๋ชฉํ ์ขํ์ ๊ฐ์ ์ถ๋ ฅํด์ฃผ๋ฉด ๋!
'๐ป Algorithm > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 2615 ์ค๋ชฉ (Brute Force) (0) 2022.07.02 [Python] ๋ฐฑ์ค 1913 ๋ฌํฝ์ด (๊ตฌํ) (0) 2022.07.02 [Python] ๋ฐฑ์ค 1325 ํจ์จ์ ์ธ ํดํน (BFS) (0) 2022.07.02 [Python] ๋ฐฑ์ค 11725 ํธ๋ฆฌ์ ๋ถ๋ชจ ์ฐพ๊ธฐ (DFS) (0) 2022.07.02 [Python] ๋ฐฑ์ค 19583 ์ธ์ด๋ฒ๊ฐ๊ฐ์ดํ (Set) (0) 2022.07.02