코딍코딍
코딩기록
코딍코딍
전체 방문자
오늘
어제
  • 분류 전체보기 (271)
    • 개발 (2)
    • Java (1)
    • 스프링 (28)
    • JPA (11)
    • Git (3)
    • 알고리즘 (160)
      • 백준 (132)
      • 프로그래머스 (8)
      • SWEA (20)
    • 토이 프로젝트 (14)
      • 간단한 Springboot CRUD (1)
      • 게시판 프로젝트 (13)
    • 알고리즘 개념정리 (8)
    • 오류 해결 (13)
    • 보류 (0)
    • AWS (5)
    • 트러블 슈팅 (0)
    • 회고 (3)
    • CS (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

최근 글

티스토리

hELLO · Designed By 정상우.
코딍코딍
알고리즘/프로그래머스

게임 맵 최단거리

알고리즘/프로그래머스

게임 맵 최단거리

2023. 6. 16. 15:53

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

 

프로그래머스

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

programmers.co.kr

 

 

소스코드

import java.util.ArrayDeque;

public class Solution {
    class Node {
        int r, c;
        public Node(int r, int c) {
            this.r = r;
            this.c = c;
        }
    }

    int[] rx = new int[]{0, 0, -1, 1};
    int[] ry = new int[]{-1, 1, 0, 0};

    public int solution(int[][] maps) {
        ArrayDeque<Node> queue = new ArrayDeque<>();
        int dist[][] = new int[maps.length][maps[0].length];
        boolean visited[][] = new boolean[maps.length][maps[0].length];
        dist[0][0] = 1;
        visited[0][0] = true;

        queue.addLast(new Node(0, 0));
        while(!queue.isEmpty()) {
            Node node = queue.pollFirst();

            for (int i = 0; i < 4; i++) {
                int nr = node.r + rx[i];
                int nc = node.c + ry[i];

                if(nr < 0 || nc < 0 || nr >= maps.length || nc >= maps[0].length) continue; //범위 밖
                if(maps[nr][nc] == 0) continue; //벽
                if(visited[nr][nc]) continue; //이미 방문

                visited[nr][nc] = true;
                dist[nr][nc] = dist[node.r][node.c] + 1;
                queue.addLast(new Node(nr, nc));
            }
        }

        return dist[maps.length - 1][maps[0].length - 1] == 0 ? -1 : dist[maps.length - 1][maps[0].length - 1];
    }
}

 

 

해결방법

BFS를 이용하였다.

'알고리즘 > 프로그래머스' 카테고리의 다른 글

네트워크  (0) 2023.06.29
입국심사  (0) 2023.06.15
오픈채팅방  (0) 2023.06.14
디펜스 게임  (0) 2023.06.14
뒤에 있는 큰 수 찾기  (0) 2023.04.10
  • 소스코드
  • 해결방법
'알고리즘/프로그래머스' 카테고리의 다른 글
  • 네트워크
  • 입국심사
  • 오픈채팅방
  • 디펜스 게임
코딍코딍
코딍코딍
ㅎ2

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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