[프로그래머스/Python] 알고리즘고득점Kit-DFS/BFS-게임맵최단거리

2024. 10. 16. 23:57·코딩테스트/프로그래머스
728x90
반응형

📌 문제링크

https://school.programmers.co.kr/learn/courses/30/lessons/1844#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

📌 풀이과정 

  • 미로 최단경로 찾기는 대부분 BFS로 풀면 좋다. 
    • 아래 코드로 작성해놓은 구조 외우면 비슷한 류의 문제 나왔을 때 빠르게 풀어낼 수 있다. 어느 정도의 암기는 좋다!
    • ⭐⭐⭐ 백준에서 DFS/BFS 문제집 풀어보는 거 강추!!!!!!!
  • 미로에서는 상하좌우로 이동하므로 dx, dy를 선언해 bfs() 안에서 for문을 돌려 각각 큐에 추가하면 된다. 
  • 주의할 점 (내가 놓쳤던 부분)
    1. q.pop(0)이어야 함. NOT q.pop()
    2. n, m은 len이다. 실제 배열에서는 n-1, m-1이 유효하다. 

 

📌 풀이코드 

# 상x-1y하x+1y좌xy-1우xy+1
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
q = []
def solution(maps):
    answer = 0
    n = len(maps); m = len(maps[0])
    visited = [[0]*m for _ in range(n)]
    answer = bfs((0,0), maps, visited, n ,m)
    if answer: return answer
    else: return -1

# 최단경로니까 bfs
def bfs(pos, maps, visited, n, m):
    q.append(pos)
    while q:
        x, y = q.pop(0)
        visited[x][y] = 1
        #print(f"\t ABOUT x={x} y={y} => maps[x][y] = {maps[x][y]}")
        
        if x == n-1 and y == m-1: 
            return maps[n-1][m-1]
        
        for i in range(4):
            nx, ny = x+dx[i], y+dy[i]
            # 범위 안이고, 길이 있고, 아직 방문 안했고 
            if (0<=nx<n and 0<=ny<m) and maps[nx][ny] == 1 and visited[nx][ny] == 0:
                q.append((nx, ny))
                #print(f"GOTO {nx}, {ny}")
                maps[nx][ny] = maps[x][y] + 1
728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'코딩테스트 > 프로그래머스' 카테고리의 다른 글

[프로그래머스/Python] 알고리즘고득점Kit-스택/큐-기능개발  (1) 2024.10.17
[프로그래머스/Python] 알고리즘고득점Kit-해시-베스트앨범  (0) 2024.10.17
[프로그래머스/Python] 알고리즘고득점Kit-탐욕법(Greedy)-구명보트  (2) 2024.10.16
[프로그래머스/Python] 알고리즘고득점Kit-탐욕법(Greedy)-큰수만들기  (0) 2024.10.16
[프로그래머스/Python] 알고리즘고득점Kit-탐욕법(Greedy)-체육복  (2) 2024.10.14
'코딩테스트/프로그래머스' 카테고리의 다른 글
  • [프로그래머스/Python] 알고리즘고득점Kit-스택/큐-기능개발
  • [프로그래머스/Python] 알고리즘고득점Kit-해시-베스트앨범
  • [프로그래머스/Python] 알고리즘고득점Kit-탐욕법(Greedy)-구명보트
  • [프로그래머스/Python] 알고리즘고득점Kit-탐욕법(Greedy)-큰수만들기
heeya16
heeya16
개발 공부 냠냠
  • heeya16
    개발자 희야
    heeya16
  • 전체
    오늘
    어제
    • 분류 전체보기 (106)
      • 코딩테스트 (66)
        • 프로그래머스 (38)
        • SWEA (2)
        • BAEKJOON (26)
      • 알고리즘 (7)
      • 자료구조 (19)
      • 프로젝트 (5)
      • 취업 주르륵 (3)
      • 데이터베이스 (0)
      • IT지식 (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    1003
    10448
    10773
    10월
    10진수
    11047
    11399
    11403
    11866
    1449
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
heeya16
[프로그래머스/Python] 알고리즘고득점Kit-DFS/BFS-게임맵최단거리
상단으로

티스토리툴바