• 분류 전체보기 (512)
    • 개발남노씨(Coding Test) (6)
    • 고농축 백엔드 (17)
    • 재귀함수 DFS 총정리 (1)
    • 프론트엔드 날개달기:Vuejs.React (1)
    • 훈훈한 javascript (5)
    • 렛츠기릿 자바스크립트 (18)
    • 나도코딩 (1)
      • 웹 스크래핑 (1)
    • 프로그래머스(자바스크립트) (41)
      • LV.0(자바스크립트) (41)
    • 프로그래머스(자바) (121)
      • LV.0(자바) (56)
      • LV.1(자바) (41)
      • LV.2(자바) (23)
    • 프로그래머스(파이썬) (127)
      • LV.0(파이썬) (46)
      • LV.1(파이썬) (51)
      • LV.2(파이썬) (30)
    • 임시저장소 (31)
    • 프로젝트 (0)
    • 자바 알고리즘 (13)
      • 알고리즘 직빵 자바 문법 (10)
      • String(문자열) (3)
    • 파이썬 알고리즘 (93)
      • 알고리즘 직빵 파이썬 문법 (20)
      • 알고리즘 백준 (2)
      • 파이썬 알고리즘(사고력기르기) (6)
      • 파이썬 탐색 & 시물레이션 (8)
      • 이분탐색 & 그리디 알고리즘 (10)
      • 스택, 큐, 해쉬, 힙 (10)
      • 완전탐색과 DFS기초 (12)
      • DFS, BFS 활용 (19)
      • 동적계획법 (6)
    • 자바 (27)
      • Java TPC(생각하고, 표현하고, 코딩하고) (17)
      • Java (중요하고, 이해 안 되고, 어려운) (10)
    • 스프링 (5)
      • 스프링 MVC 패턴 2편 (5)
hELLO · Designed By 정상우.
@@#@@

기록용 블로그

파이썬 알고리즘/DFS, BFS 활용

10.미로탐색(DFS) - 섹션6의 순열구하기 문제참고

2022. 11. 11. 13:09

문제 -생략

 

 

문제풀이

import sys
sys.stdin=open("input.txt", "r")
dx=[-1, 0, 1, 0]  
dy=[0, 1, 0, -1]

def DFS(x,y):
    global cnt
    if x==6 and y == 6:  #if문을 만족하는 여러 case가 나올 것이다.
       cnt+=1
    else:
        for i in range(0, 4): #range의 범위는 트리의 가지(자식) 수를 의미한다. i는 branch의 값을 의미한다.  
          xx=x+dx[i]
          yy=y+dy[i]

          if 0<=xx<=6 and 0<=yy<=6 and board[xx][yy] ==0:  # xx,yy는 next좌표를 의미한다.
                board[xx][yy]=1
                DFS(xx, yy)              #재귀함수가 root노트가 된다. 
                board[xx][yy]=0

if __name__=="__main__":
  board=[list(map(int, input().split())) for _ in range(7)]
  board[0][0] = 1 #최초 시작점에 발자국 남김
  cnt=0
  DFS(0,0)
  print(cnt)

 

Hint

▶ 재귀함수가 root노드가 된다.(가장 중요)

 

▶ xx, yy좌표는 next좌표 즉 나아가고자하는 좌표를 의미한다.

 

▶ 지나온 지점은 board[x][y] =1을 대입해서 발자국을 표시한다.

 

▶ 다만 DFS(깊이우선탐색)은 앞으로 forward and back을 반복하는 구조이므로

     back 할때 board[x][y] =0 을 대입시켜서 방금 앞에 갔었던 흔적을 지운다.

 

▶ x ==6 and y ==6 일때 도착지점에 도착한다. 따라서 도착하는 여러 case를 카운팅한다.

 

 

저작자표시 비영리 변경금지 (새창열림)

'파이썬 알고리즘 > DFS, BFS 활용' 카테고리의 다른 글

12.단지 번호 붙이기(DFS)  (0) 2022.11.11
11. 등산경로(DFS)  (0) 2022.11.11
9.미로의 최단거리 통로(BFS)  (1) 2022.11.11
8. 사과나무(BFS) -섹션3 봉우리 참고  (0) 2022.11.10
7. 송아지 찾기(BFS)  (0) 2022.11.10
    '파이썬 알고리즘/DFS, BFS 활용' 카테고리의 다른 글
    • 12.단지 번호 붙이기(DFS)
    • 11. 등산경로(DFS)
    • 9.미로의 최단거리 통로(BFS)
    • 8. 사과나무(BFS) -섹션3 봉우리 참고
    @@#@@
    @@#@@
    자바, 스프링, 알고리즘, 깃허브, 파이썬

    티스토리툴바