퍼펙트코딩
퍼펙트코딩
퍼펙트코딩
전체 방문자
오늘
어제
  • 분류 전체보기 (35)
    • C++ (4)
    • Phython (1)
    • C (2)
    • 프로그램 에러 (3)
    • 공부 정리글 (1)
      • 자료구조 (0)
    • 백준 (23)
      • GOLD (5)
      • BRONZE (8)
      • SILVER (10)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • BOJ 9084
  • BOJ 23972
  • BOJ10807
  • 9084 C++
  • 10807 C++
  • 백준 1715번
  • 백준 10807
  • BOJ 3003
  • 백준 3003
  • 백준 3003번
  • BOJ 1181
  • 1715 C++
  • 3003 C++
  • 백준 23972번
  • c++
  • 백준 23972
  • BOJ 1715
  • 백준
  • 23972 C++
  • 백준 9084번

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
퍼펙트코딩

퍼펙트코딩

백준/SILVER

[백준 2178번][C++] 미로 탐색

2022. 8. 29. 01:28
728x90
반응형
#include <iostream>
#include <string>
#include <vector>
#include <queue>
using namespace std;

//미로 표
vector<vector<int>> miro(102, vector<int>(102, -1));
//방문 확인용
vector<vector<int>> isVisited(102, vector<int>(102, 0));

//축 이동
int MovePointx[4] = { -1,1,0,0 };
int MovePointy[4] = { 0,0,-1,1 };

//행,렬
int height, width;



void FindMin(int x, int y) {

	//bfs를 위한 좌표저장 큐
	queue<pair<int, int>> Point_List;

	Point_List.push(make_pair(x, y));

	while (!Point_List.empty()) {
		int x = Point_List.front().first;
		int y = Point_List.front().second;

		//현재 걸린 거리
		int distance = miro[x][y];

		for (int i = 0;i < 4;i++) {
			int CheckX = x + MovePointx[i];
			int CheckY = y + MovePointy[i];

			//저장된 수가 -1이나 0이 아니고 방문한 적이 없을 때
			if (miro[CheckX][CheckY] > 0 && isVisited[CheckX][CheckY] == 0) {
				//좌표를 탐색한 것으로 업데이트
				isVisited[CheckX][CheckY] = 1;
				//거리인 저장된 수 업데이트
				miro[CheckX][CheckY] += distance;
				Point_List.push(make_pair(CheckX, CheckY));
			}
		}
		Point_List.pop();
	}
}

int main() {
	
	//행,렬 입력받기
	cin >> height >> width;

	//미로 입력받기 위한 string
	string line;

	for (int j = 1;j <= height;j++) {
		
		//한 줄 입력받기
		cin >> line;

		// 한글자씩 숫자로 변환하여 miro에 저장
		for (int i = 1;i <= width;i++) {
			miro[j][i] = (line[i-1] - '0');
		}
	}

	//1,1부터 탐색
	isVisited[1][1] = 1;
	FindMin(1, 1);
	
	cout << miro[height][width];
}
728x90
반응형

'백준 > SILVER' 카테고리의 다른 글

[백준 11053번][C++] 가장 긴 증가하는 부분 수열  (0) 2022.09.04
[백준 9095번][C++] 1, 2, 3 더하기  (0) 2022.08.29
[백준 1697번][C++] 숨바꼭질  (0) 2022.08.07
[백준 1012번][C++] 유기농 배추  (0) 2022.08.05
[백준 11726번][C++] 2×n 타일링  (0) 2022.08.04
    '백준/SILVER' 카테고리의 다른 글
    • [백준 11053번][C++] 가장 긴 증가하는 부분 수열
    • [백준 9095번][C++] 1, 2, 3 더하기
    • [백준 1697번][C++] 숨바꼭질
    • [백준 1012번][C++] 유기농 배추
    퍼펙트코딩
    퍼펙트코딩

    티스토리툴바