[프로그래머스 lv 2] 게임 맵 최단거리(깊이/너비 우선 탐색(DFS/BFS))

2025. 2. 27. 10:58·✨ 공부 기록/알고리즘

아이디어 : 이코테 책에서 본 유형과 비슷하다. BFS방식으로 지나간 칸에 숫자를 1씩 더하면서 최종 거리를 구하면 될 것 같다.

 

# 첫 번째 시도

from collections import deque

def solution(maps):
    queue = deque([(0,0)])
    n = len(maps)
    m = len(maps[0])

    # 동서남북
    dx = [1,-1,0,0]
    dy = [0,0,-1,1]
    while queue:
        x,y = queue.popleft()
        for i in range(4):
            nx = x+dx[i]
            ny = y+dy[i]
            if nx >= 0 and ny >= 0 and nx < m and ny < n:
                if maps[nx][ny]==1:
                    queue.append((nx,ny))
                    maps[nx][ny] = maps[x][y] + 1
                       
    if maps[n-1][m-1]<=1:
        answer = -1
    else:
        answer = maps[n-1][m-1]
    return answer

 

테스트케이스는 넘겼으나 무수한 실패와 런타임에러의 향연에 다시 생각해봐야 할 것 같다.

 

# 두 번째 시도(성공)

from collections import deque

def solution(maps):
    answer = 0
    n,m = len(maps), len(maps[0])
    # 동서남북
    dx = [1,-1,0,0]
    dy = [0,0,-1,1]
    x,y=0,0
    queue = deque()
    queue.append((x,y))
    while queue:
        x, y = queue.popleft()
        for i in range(len(dx)):
            nx = x + dx[i]
            ny = y + dy[i]
            if nx < 0 or ny < 0 or nx >= n or ny >= m or maps[nx][ny]==0:
                continue
            elif maps[nx][ny]==1:
                queue.append((nx,ny))
                maps[nx][ny]=maps[x][y]+1

    answer = maps[n-1][m-1]
    if answer==1:
        answer = -1
    return answer
저작자표시 비영리 변경금지 (새창열림)

'✨ 공부 기록 > 알고리즘' 카테고리의 다른 글

[프로그래머스 lv 2] 기능개발 (스택/큐)  (0) 2025.02.28
[프로그래머스 lv 3] 단어 변환 (깊이/너비 우선 탐색(DFS/BFS))  (0) 2025.02.28
[프로그래머스 lv 3] 네트워크(깊이/너비 우선 탐색(DFS/BFS))  (0) 2025.02.26
[프로그래머스 lv 2] 타겟 넘버(깊이/너비 우선 탐색(DFS/BFS))  (0) 2025.02.26
[프로그래머스 lv 1] 같은 숫자는 싫어(코딩테스트 고득점 Kit/스택/큐)  (0) 2025.02.25
'✨ 공부 기록/알고리즘' 카테고리의 다른 글
  • [프로그래머스 lv 2] 기능개발 (스택/큐)
  • [프로그래머스 lv 3] 단어 변환 (깊이/너비 우선 탐색(DFS/BFS))
  • [프로그래머스 lv 3] 네트워크(깊이/너비 우선 탐색(DFS/BFS))
  • [프로그래머스 lv 2] 타겟 넘버(깊이/너비 우선 탐색(DFS/BFS))
LaonMoon
LaonMoon
  • LaonMoon
    스토리생성연구블로그
    LaonMoon
  • 전체
    오늘
    어제
  • 공지사항

    • About me👋
    • 분류 전체보기
      • ✨ Story Generation
        • 논문 리뷰
        • 연구 관련 생각
      • ✨ 자연어 처리
        • (짧은) 논문 리뷰
        • HuggingFace
        • Transformer 구현
      • ✨ 공부 기록
        • 알고리즘
        • 딥러닝
        • 웹 개발
        • Flutter
        • Flask
        • Android
        • NLP
        • Docker&k8s
        • Database
        • [24-1] 데이터 분석
        • [24-1] RL
      • ✨ 포트폴리오
        • 2020
        • 2021
        • 2022
        • 2023
        • 2024
      • 프로그래밍
        • 오류(Error)정리
        • 시행착오
        • 리눅스 명령어
        • 공부내용 정리
      • AI Playground
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
LaonMoon
[프로그래머스 lv 2] 게임 맵 최단거리(깊이/너비 우선 탐색(DFS/BFS))
상단으로

티스토리툴바