Early Riser
생각정리
Early Riser
전체 방문자
오늘
어제
  • 분류 전체보기 (128)
    • JS (19)
    • React (33)
    • React Native (2)
    • Library, Tool (13)
    • CSS (2)
    • Algorithm (40)
    • Computer Science (3)
    • 회고 (3)
    • AI (13)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

인기 글

태그

  • 논문리뷰
  • global minima
  • BFS
  • 부스트캠프 합격
  • dfs
  • boosting
  • 백트래킹
  • 파이썬
  • 알고리즘
  • 밑바닥
  • 부스트캠프 합격 후기
  • 딥러닝
  • 구현
  • useEffect
  • react
  • 자바스크립트
  • 비동기
  • 완전탐색
  • 프로그래머스
  • javascript
  • 손실함수
  • LGBM
  • local minima
  • lightgbm
  • 오늘의불경
  • RNN
  • useState
  • js
  • 백준
  • 부스트캠프 9기

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Early Riser

생각정리

백준 13565번: 침투 (파이썬, DFS)
Algorithm

백준 13565번: 침투 (파이썬, DFS)

2022. 8. 22. 16:29

전류가 통하는 격자는 0, 통하지 않는 격자는 1이다. outder side에서 inner side로 침투하면 성공이므로, 첫번째 행의 원소들에 대해서만 DFS를 하면 된다.

마지막 행에 도달했다는것을 알기 위해 방문을 확인하는 배열을 따로 만들었다. outer side에서만 DFS를 하므로(방문), inner side에 방문을 했다면 침투에 성공한 것이기 때문이다.

 

여담으로 출력을 Yes로 했다가 계속 틀려서 머리가 터지는 줄 알았는데 대소문자 구별을 잘해야 하고 문제 조건을 꼼꼼히 읽어야 한다..

 

import sys
sys.setrecursionlimit(10**9)

dx = [0, 1, 0, -1]
dy = [1, 0, -1, 0]


def dfs(x, y):
    visited[x][y] = True
    for k in range(4):
        nx = x + dx[k]
        ny = y + dy[k]
        if 0 <= nx < M and 0 <= ny < N and graph[nx][ny] == 0 and not visited[nx][ny]:
            dfs(nx, ny)


M, N = map(int, sys.stdin.readline().split())

graph = []
for _ in range(M):
    graph.append(list(map(int, sys.stdin.readline().rstrip())))

visited = [[False]*N for i in range(M)]

for y in range(N):
    if graph[0][y] == 0 and not visited[0][y]:
        dfs(0, y)

if True in visited[M-1]:
    print('YES')
else:
    print('NO')

 

'Algorithm' 카테고리의 다른 글

백준 17070번: 파이프 옮기기 1 (파이썬, DFS, DP)  (2) 2022.09.04
백준 2623번: 음악프로그램 (파이썬, 위상정렬, Cycle)  (4) 2022.08.28
백준 2468번: 안전영역 (파이썬, DFS)  (0) 2022.08.22
백준 2667번: 단지번호 붙이기 (파이썬, BFS)  (0) 2022.08.22
백준 7576번: 토마토 (파이썬, BFS)  (0) 2022.08.22
    'Algorithm' 카테고리의 다른 글
    • 백준 17070번: 파이프 옮기기 1 (파이썬, DFS, DP)
    • 백준 2623번: 음악프로그램 (파이썬, 위상정렬, Cycle)
    • 백준 2468번: 안전영역 (파이썬, DFS)
    • 백준 2667번: 단지번호 붙이기 (파이썬, BFS)
    Early Riser
    Early Riser
    2년차 프론트엔드 개발자입니다. https://github.com/EarlyRiser42

    티스토리툴바