미로 탈출

2023. 1. 2. 12:24· Problem Solving/BFS

이 문제는 이것이 코딩테스트다. 152페이지 문제이다.

BFS문제를 많이 다뤄 보지 않았어서 시간이 오래 소모 되었던 것같다.

DFS,BFS는 양식이 거의 비슷하니깐 틀자체를 기본적으로 몸에 익혀야겠다.

아래는 나의 코드이다.

 

import sys
from collections import deque

N,M = map(int,sys.stdin.readline().split())
myMap = []
visited=[[False]*M for _ in range(N)]
moves = [[1,0],[0,1],[-1,0],[0,-1]]
for i in range(N):
    temp=list(map(int,sys.stdin.readline().split()[0]))
    myMap.append(temp)

def BFS(start,end):
    que= deque()
    que.append(start)
    while que:
        q=que.popleft()
        if q[0] == end[0] and q[1] == end[1]:
            return myMap[end[0]][end[1]]
        visited[q[0]][q[1]] = True
        for move in moves:
            nq_x=q[0]+move[0]
            nq_y=q[1]+move[1]
            if nq_x < 0 or nq_y< 0 or nq_x > end[0] or nq_y > end[1]:
                continue
            if myMap[nq_x][nq_y] == 0 or visited[nq_x][nq_y] == True:
                continue
            if myMap[nq_x][nq_y] == 1:
                myMap[nq_x][nq_y] = myMap[q[0]][q[1]] + 1
            que.append([nq_x,nq_y])
    return "No way"


print(BFS([0,0],[N-1,M-1]))

 

만약 경로를 출력하는 문제가 나온다면 역순으로 한번 더 조사하는 방법을 쓰면 될 것같다. 10 -> 9 ->8->7 순으로

 

이러한 최단거리나 최단경로 구하는 문제에서는 DFS를 사용하면 시간초과가 날 수 있다.

길의 갈래가 무수히 많아 질 수 있기 때문이다.

BFS를 잘 활용해보자

'Problem Solving > BFS' 카테고리의 다른 글

BOJ2606 바이러스  (1) 2024.03.07
BOJ11724 연결 요소의 개수  (1) 2024.03.07
BOJ1260 DFS와 BFS  (0) 2024.03.07
BOJ1389 케빈 베이컨의 6단계 법칙  (0) 2023.03.29
BOJ1012 유기농 배추  (0) 2023.03.14
'Problem Solving/BFS' 카테고리의 다른 글
  • BOJ11724 연결 요소의 개수
  • BOJ1260 DFS와 BFS
  • BOJ1389 케빈 베이컨의 6단계 법칙
  • BOJ1012 유기농 배추
윤재에요
윤재에요
윤재에요
yunzae.log
윤재에요
전체
오늘
어제
  • 분류 전체보기 (438)
    • Computer Science (115)
      • 데이터베이스 (50)
      • 네트워크 (18)
      • 소프트웨어 공학 (1)
      • 알고리즘 (10)
      • 자료구조 (9)
      • 컴퓨터구조 (0)
      • 운영체제 (0)
      • 데이터 통신 (16)
      • 프로그래밍언어론 (11)
    • Project (20)
      • 후크(Flutter) (1)
      • BDSR로그북(App,BackEnd) (2)
      • 나만의 주점(STM32,Arduino,androi.. (9)
      • 공다(App,BackEnd) (2)
      • 카카오쇼핑 클론코딩 (4)
      • 암호화폐자동매매 (2)
    • Problem Solving (208)
      • 자바 문법 (20)
      • 파이썬 문법,함수 (6)
      • 그리디 (5)
      • 구현 (43)
      • DFS (3)
      • BFS (17)
      • 정렬 (15)
      • 이진 탐색 (16)
      • 다이나믹 프로그래밍 (6)
      • 최단 경로 (5)
      • 그래프 (1)
      • 자료구조 (5)
      • 투포인터 (15)
      • SQL (44)
      • 구간합 (7)
    • I leaned (78)
      • 스프링,스프링부트 (31)
      • Git (6)
      • JAVA (5)
      • Etc (30)
    • 취업 (15)
      • PT면접 (6)
      • 기술면접 (9)
      • 인성면접 (0)
    • log (0)

블로그 메뉴

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

공지사항

인기 글

태그

  • 힙큐
  • 참조 무결성
  • 데이터베이스
  • UML
  • Relationship model
  • 효율적인화폐구성
  • 기수정렬
  • 최단거리
  • 부품찾기
  • 개미전사
  • 이것이코딩테스트다
  • 계수정렬
  • 다이나믹프로그래밍
  • 재시도
  • 플로이드 워셜
  • 다익스트라
  • 이것이 코딩테스트다
  • 다이나믹
  • 파이썬
  • 최단 거리
  • 먀
  • 카카오테크캠퍼스
  • 교환정렬
  • DP
  • 제약 사항
  • 이것이 코딩테스트다.
  • E-R Model
  • 다이어그램
  • weak entity
  • 그리디

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
윤재에요
미로 탈출
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.