inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

65. 미로탐색 (2차원 배열 DFS)

65번 미로탐색 질문있습니다!

238

taehyun Cha

작성한 질문수 2

0

#include<iostream>
#include<algorithm>
#include<vector>

using namespace std;

#define size 8

int cnt = 0;
int dx[4] = { 0,1,0,-1 };//12시 3시 6시 9시 방향 순
int dy[4] = { 1,0,-1,0 };

int dfs(int mtrx[][size], vector<vector<int> > visit, int x, int y)
{
	int xx, yy;
	if (x==size-1&&y==size-1)
	{
		cnt++;
	}
	else
	{
		visit[x][y] = 1;
		for (int i = 0; i < 4; i++)
		{
			xx = x + dx[i];//x축으로 갈좌표
			yy = y + dy[i];//y축으로 갈 좌표

			if (xx < 1 || xx>7 || yy < 1 || yy>7)//행렬을 벗어나는 경우
				continue;
			if (mtrx[xx][yy] == 0 && visit[xx][yy] != 1)
			{
				dfs(mtrx,visit,xx,yy);
			}
		}
	}

	return cnt;
}

 

int main()
{
	int mtrx[size][size];
	vector<vector<int> > visit(size,vector<int>(size, 0));
	
	for (int i = 1; i < size; i++)
	{
		for (int j = 1; j < size; j++)
		{
			cin>>mtrx[i][j];
		}
	}

	int count = dfs(mtrx,visit, 1, 1);
	cout << count;

}

65번 미로탐색 질문있습니다!

저는 전역변수를 사용하는 것보다 함수의 인수로 전달하는게 더 익숙하여 함수의 인수로 visit 벡터 즉 방문한 길인지 아닌지 판별하는 2차원 벡터를 넘겨주었습니다. 이렇게 할 경우 정확한 답이 나옵니다.

그러나 인수로 메인문에서 선언된 배열 자체 int visit[][size], 를 넘기거나 int** visit 처럼 동적생성을해서 배열을 넘기면

답이 정상적으로 나오지 않습니다. 저는 벡터가 동적생성되었기 때문에 int** visit으로 넘기면 정상작으로 동작할 것으로 생각했으나 실제로 그렇지 않아 의문이 생기게되어 질문드립니다. 함수의 인수로 벡터와 배열을 넘길때와 동적생성한 배열을 넘길때의 차이를 알고 싶습니다!

 

 

 

코테 준비 같이 해요! C++

답변 1

0

김태원

안녕하세요^^

int** visit 와 같이 하면 주소값이 넘어가는게 아닐까 싶은데 저도 잘 모를겠습니다.

테스트 케이스 질문

0

390

1

병합정렬 시간복잡도 질문

0

476

1

41.연속된 자연수의 합 문제풀이에서 수학적인 원리를 모르고 있습니다.

0

1368

2

질문드립니다.

0

392

1

질문드립니다!

0

438

1

dev 프로그램 질문

0

277

1

문제가 이해가 안되요

0

381

1

4번 나이차이 문제 접근법 질문 드립니다.

0

310

1

source file not compiled

0

1075

3

59번 질문드립니다.

0

377

1

25번 문제 질문

0

352

1

4. 나이차이 문제 질문입니다.

0

378

1

90번 라이언 킹 심바 1번 테스트 케이스

0

473

1

71번 문제 전역 변수 질문 있습니다

0

367

1

75번, 79번 priority_queue관련

1

361

1

75.최대 수입 스케줄

0

404

2

복면산 정답의 수

0

438

1

테스트 케이스에 대해서

0

452

1

수업 내용 질문입니다!

1

237

1

풀어보면 좋은 문제 목록 - 2580 스토쿠 DFS 질문입니다!!

0

848

2

12. 플로이드-와샬(그래프 최단거리) . 27:25초

0

259

1

다른 풀이 방식

0

320

1

크루스칼 vs 프림

0

316

1

숫자 총개수 small 질문있습니다.

0

246

1