-
[백준] 13565 - 침투알고리즘 2023. 5. 12. 17:33728x90
1. 문제
https://www.acmicpc.net/problem/13565
13565번: 침투
첫째 줄에는 격자의 크기를 나타내는 M (2 ≤ M ≤ 1,000) 과 N (2 ≤ N ≤ 1,000) 이 주어진다. M줄에 걸쳐서, N개의 0 또는 1 이 공백 없이 주어진다. 0은 전류가 잘 통하는 흰색, 1은 전류가 통하지 않
www.acmicpc.net
2. 접근
1. '이코테 - 음료수 얼려먹기' 에서 사용되는 dfs 기본 로직을 사용하면 풀 수 있을것 같다
2. 위에서 board[x][y] == 0 부분이 있다면, dfs를 실행한다 ( dfs를 실행한다 -> 전류를 통하게 한다 )
3. 실행 후에 가장 아래 열에서 board[n-1][i] == 2 즉, 전류가 통했다면 flag == True로 변경해서 'YES'를 통하지 않았다면 'NO'를 출력하면 된다.
3. 풀이
# 13565 실버 2 import sys input = sys.stdin.readline sys.setrecursionlimit(10**9) n,m = map(int,input().split()) board = [] for i in range(n): board.append(list(map(int,input().rstrip()))) def dfs(x,y): if 0<=x<n and 0<=y<m and board[x][y] == 0: board[x][y] = 2 dfs(x-1,y) dfs(x+1,y) dfs(x,y-1) dfs(x,y+1) for j in range(m): if board[0][j] == 0: dfs(0,j) flag = False for j in range(m): if board[n-1][j] == 2: flag = True break if flag == True: print('YES') else: print('NO')
'알고리즘' 카테고리의 다른 글
[백준] 1969 - DNA (1) 2023.05.13 [백준] 1748 - 수 이어 쓰기1 (0) 2023.05.12 [백준] 1138 - 한 줄로 서기 (0) 2023.05.10 [백준] 1205 - 등수 구하기 (0) 2023.05.10 [백준] 3184 - 양 (1) 2023.05.10