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

2023. 11. 4. 13:18· Koala - 12기/코딩테스트 준비 스터디

문제

 

설명

미로를 탈출하는 최단 거리를 구하는 문제이다.

최단 거리를 구해야 하기에 깊이 우선 탐색이 아닌 너비 우선 탐색을 사용하였고,

입력이 붙어서 들어오기에 먼저 string으로 받고 인덱스 하나 하나 집어 넣어주었다.

bfs를 도는 중에는 상하좌우를 검사하여 인덱스를 벗어나지 않고/방문하지 않았고/이동할 수 있는 위치일 때 큐에 삽입하였다.

 

그리고 처음 알았는데 queue.push 대신 queue.emplace를 쓰면 속도도 더 빠르고 pair같은 구조체를 make_pair를 사용하지 않고 바로 집어 넣을 수 있어 편했다.

 

최단 거리를 구하는게 조금 어려웠는데, 그냥 2차원 배열을 새로 만들어서 기록해주는게 제일 편한듯 했다.

 

 

코드

#include <bits/stdc++.h>
using namespace std;

int N, M;
bool visited[101][101];
int maze[101][101];
int dist[101][101];

// 동서남북
int x[4] = { 1, -1, 0, 0 };
int y[4] = { 0, 0, 1, -1 };

int bfs(int a, int b) {
	visited[a][b] = true;

	queue<pair<int, int>> q;
	q.emplace(a, b);

	while (!q.empty()) {
		pair<int, int> top = q.front();
		q.pop();

		for (int i = 0; i < 4; i++) {
			int nx = top.first + x[i];
			int ny = top.second + y[i];
			if (!visited[nx][ny] and nx >= 0 and ny >= 0 and nx <= N and ny <= M and maze[nx][ny] == 1) {
				q.emplace(nx, ny);
				visited[nx][ny] = true;
				dist[nx][ny] = dist[top.first][top.second] + 1;
			}
		}
	}

	return dist[N][M];
}

int main() {
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

	cin >> N >> M;
	for (int i = 1; i <= N; i++) {
		string a;
		cin >> a;
		for (int j = 1; j <= M; j++) {
			maze[i][j] = a[j - 1] - '0';
		}
	}

	int answer = bfs(1, 1);

	cout << answer + 1;

	return 0;
}
저작자표시 (새창열림)

'Koala - 12기 > 코딩테스트 준비 스터디' 카테고리의 다른 글

[백준/python3] 11559번 : Puyo Puyo  (0) 2023.11.05
[백준/python] 1012번: 유기농배추  (0) 2023.11.05
[백준/python3] 1874번: 스택 수열  (0) 2023.10.30
[백준/Python] 1918번 : 후위 표기식  (0) 2023.10.30
[백준/Python] 1874번 : 스택 수열  (0) 2023.10.29
'Koala - 12기/코딩테스트 준비 스터디' 카테고리의 다른 글
  • [백준/python3] 11559번 : Puyo Puyo
  • [백준/python] 1012번: 유기농배추
  • [백준/python3] 1874번: 스택 수열
  • [백준/Python] 1918번 : 후위 표기식
KauKoala
KauKoala
항공대 알고리즘 동아리 Koala 🥰
Koala항공대 알고리즘 동아리 Koala 🥰
KauKoala
Koala
KauKoala
전체
오늘
어제
  • 분류 전체보기 (1884)
    • 공지 게시판 (10)
    • 정보 게시판 (8)
    • Codeforce (15)
    • acm-icpc (6)
    • Koala - 1기 (16)
    • Koala - 2기 (111)
      • Programming Contest (1)
      • A반 (20)
      • B반 (39)
      • C반 (22)
      • 기초 강의 (18)
    • Koala - 3기 (10)
      • 기초 스터디 (7)
    • Koala - 4기 (67)
    • Koala - 5기 (144)
      • 기초 알고리즘 스터디 (75)
      • 코딩테스트 준비 스터디 (68)
    • Koala - 6기 (102)
      • 기초 알고리즘 스터디 (75)
      • 코딩테스트 준비 스터디 (25)
      • 모의 테스트 스터디 (1)
    • Koala - 7기 (167)
      • 기초 알고리즘 스터디 (97)
      • 코딩테스트 준비 스터디 (68)
      • 모의 테스트 스터디 (1)
    • Koala - 8기 (44)
      • 기초 알고리즘 스터디 (32)
      • 코딩테스트 준비 스터디 (10)
      • 코드포스 버츄얼 스터디 (0)
      • 프로그래머스 LV2 스터디 (0)
    • Koala - 9기 (205)
      • 기초 알고리즘 스터디 (138)
      • 코딩테스트 준비 스터디 (64)
      • 모의테스트 준비 스터디 (1)
    • Koala - 10기 (117)
      • 기초 알고리즘 스터디 (30)
      • 코딩테스트 준비 스터디 (86)
      • 모의테스트 준비 스터디 (1)
    • Koala - 11기 (151)
      • 기초 알고리즘 스터디 (46)
      • 코딩테스트 준비 스터디 (104)
      • 모의테스트 준비 스터디 (1)
    • Koala - 12기 (86)
      • 기초 알고리즘 스터디 (31)
      • 코딩테스트 준비 스터디 (55)
    • Koala - 13기 (119)
      • 기초 알고리즘 스터디 (52)
      • 코딩테스트 준비 스터디 (67)
    • Koala - 14기 (116)
      • 기초 알고리즘 스터디 (39)
      • 코딩테스트 준비 스터디 (77)
    • Koala - 15기 (138)
      • 기초 알고리즘 스터디 (73)
      • 코딩테스트 준비 스터디 (65)
    • Koala - 16기 (47)
      • 코딩테스트 기초 스터디 (16)
      • 코딩테스트 심화 스터디 (31)
    • Koala - 17기 (62)
      • 코딩테스트 기초 스터디 (15)
      • 코딩테스트 심화 스터디 (47)
    • Koala - 18기 (31)
      • 코딩테스트 기초 스터디 (11)
      • 코딩테스트 심화 스터디 (20)
    • Koala - 19기 (38)
      • 코딩테스트 기초 스터디 (7)
      • 코딩테스트 심화 스터디 (31)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 🐨항공대 알고리즘 학회 Koala 3기 모집
  • 🐨항공대 알고리즘 학회 Koala 2기 모집
  • 소모임 소개

인기 글

태그

  • BOJ
  • 백트래킹
  • 파이썬
  • C++
  • 백준
  • BFS
  • dp
  • dfs

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.3.0
KauKoala
[백준/C++] 2178번 : 미로 탐색
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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