[프로그래머스] 게임 맵 최단거리 (C++)

2021. 3. 23. 23:31·코딩 테스트
728x90

🍒문제

programmers.co.kr/learn/courses/30/lessons/1844

 

코딩테스트 연습 - 게임 맵 최단거리

[[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1

programmers.co.kr

🍒풀이

1. Queue를 사용하여 BFS로 구현 -> 최단거리 조건

2. dist 배열을 사용하여 지나온 거리 중 최단거리 갱신

3. 마지막 좌표 (n,m)에 도달하였다면 dist[n][m] 값 리턴

4. 마지막 좌표에 도달하지 못 하면 -1 리턴

 

🍒코드

#include <vector>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cstring>
using namespace std;
/*
(1,1) -> (n,m) 최단 거리 리턴
도착 못 할 경우 -1 반환
*/
int dir[4][2] = { {0,1}, {1,0}, {-1,0}, {0,-1}};
int dist[101][101]; //방문거리 표시

int solution(vector<vector<int> > maps)
{
    int answer = 9999;
    int n = maps.size(); //세로, 행
    int m = maps[0].size(); //가로, 열
    queue<pair<int, int>> q;
    memset(dist, -1, sizeof(dist));
    
    q.push({0,0});
    dist[0][0]=1;
    
    while(!q.empty()){
        int y = q.front().first;
        int x = q.front().second;
        q.pop();
        
        if(y==n-1 && x == m-1)
            return dist[y][x];
        
        for(int i=0; i<4; i++){
            int ny = y + dir[i][0];
            int nx = x + dir[i][1];
            if(ny >=0 && ny < n && nx >=0 && nx < m){
                if(maps[ny][nx]==1 && dist[ny][nx]==-1){
                    dist[ny][nx] = dist[y][x]+1;
                    q.push({ny, nx});
                }
            }
        } 
    }

    return -1;
}

 

728x90

'코딩 테스트' 카테고리의 다른 글

[프로그래머스] 신규 아이디추천 (Python)  (0) 2021.03.29
[프로그래머스] 뉴스 클러스터링 (Python)  (0) 2021.03.24
[프로그래머스] 타겟넘버 (Python)  (0) 2021.03.23
[프로그래머스] 가장 큰 정사각형 찾기 (Python)  (0) 2021.03.23
[프로그래머스] 문자열 압축 (Python)  (0) 2021.03.22
'코딩 테스트' 카테고리의 다른 글
  • [프로그래머스] 신규 아이디추천 (Python)
  • [프로그래머스] 뉴스 클러스터링 (Python)
  • [프로그래머스] 타겟넘버 (Python)
  • [프로그래머스] 가장 큰 정사각형 찾기 (Python)
zoodi
zoodi
IT/개발 관련 지식을 기록하는 블로그입니다.
  • zoodi
    오늘의 기록
    zoodi
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 후기
        • 컨퍼런스
        • 일상리뷰
      • 금융경제
        • 뉴스
        • 금융IT용어
        • 경제 및 부동산
      • 코딩 테스트
      • 스터디
        • JAVA
        • Kotlin
        • Spring
        • React, Nextjs
        • 인공지능 AI
        • Cloud & k8s
        • Kafka
        • Database
        • Network
        • Algorithm
        • Hadoop
        • LINUX
        • R Programming
        • 기타 (소공, 보안)
      • 도서
      • 기타
  • 블로그 메뉴

    • 홈
    • 스터디
    • 금융경제
    • 후기
    • 기타
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자바
    리트코드
    codility
    금융용어
    MySQL
    스프링부트
    스프링
    코테공부
    자료구조
    코딜리티
    코딩테스트
    Kotlin
    네트워크
    Python
    프로그래머스
    java
    Spring
    쿠버네티스
    알고리즘
    코테
    pythoncodingtest
    코딩
    이분탐색
    LeetCode
    springboot
    카카오코테
    CodingTest
    kafka
    C++
    db
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
zoodi
[프로그래머스] 게임 맵 최단거리 (C++)
상단으로

티스토리툴바