inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

7. 알리바바와 40인의 도둑(Bottom-Up)

안녕하세요 선생님 저는 bfs로 풀어봤는데요..

215

celestial_

작성한 질문수 72

0

예제랑 테스트케이스(input 1,2)

전부 맞게 나오는데 왜 틀렸는지 모르겠어서 

주석과 함께 설명을 넣었습니다. 

어느 부분이 문제인지 확인해주시면 감사하겠습니다ㅜ! 

#include<stdio.h>
#include<iostream>
#include<vector>
#include<queue>
#define MAX 21
using namespace std;

int map[MAX][MAX];
int dp[MAX][MAX];
bool visited[MAX][MAX];
int n;

typedef struct Node {
	int x;
	int y;
	int dp;
}node;


queue<node>Q;
int dx[2] = { 0,1 };
int dy[2] = { 1,0 };

void BFS() {
	node current;
	while (!Q.empty()) {
		current.x = Q.front().x;
		current.y = Q.front().y;
		current.dp = Q.front().dp;
		Q.pop();
	/*	printf("<<<(%d,%d,%d)에서 탐색을 시작합니다. >>>\n\n", current.x, current.y, current.dp);
		printf("<<<현재 dp배열의 상태입니다. >>\n\n");
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				printf("%d ", dp[i][j]);
			}
			printf("\n");
		}*/
		for (int i = 0; i < 2; i++) {
			int x = current.x + dx[i];
			int y = current.y + dy[i];
			if (x >= n || y >= n) {continue;}

			if (dp[x][y] > current.dp + map[x][y]) {
				/*printf("current.dp : %d\n\n", current.dp);
				printf("map[x][y] : %d\n\n", map[x][y]);*/
				dp[x][y] = current.dp + map[x][y];
				node next;
				next.x = x;
				next.y = y;
				next.dp = dp[x][y];
				//printf("(%d,%d,%d)에서 BFS탐색을 계속합니다. \n\n", next.x, next.y, next.dp);
				Q.push(next);

			}


		}

	}
	return;


}



int main() {

	cin >> n;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			cin >> map[i][j];
			dp[i][j] = 1000000;
		}
	}



	node start;
	start.x = 0;
	start.y = 0;
	start.dp = map[0][0];

	
	dp[0][0] = map[0][0];
	visited[0][0] = true;

	Q.push(start);


	BFS();

	printf("%d ", dp[n - 1][n - 1]);





}

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

답변 1

0

김태원

안녕하세요^^

제 컴퓨터에서 채점해보니 100점 나옵니다.

테스트 케이스 질문

0

371

1

병합정렬 시간복잡도 질문

0

461

1

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

0

1341

2

질문드립니다.

0

374

1

질문드립니다!

0

427

1

dev 프로그램 질문

0

272

1

문제가 이해가 안되요

0

374

1

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

0

305

1

source file not compiled

0

1033

3

59번 질문드립니다.

0

369

1

25번 문제 질문

0

345

1

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

0

367

1

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

0

468

1

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

0

357

1

75번, 79번 priority_queue관련

1

353

1

75.최대 수입 스케줄

0

394

2

복면산 정답의 수

0

428

1

테스트 케이스에 대해서

0

443

1

수업 내용 질문입니다!

1

228

1

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

0

818

2

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

0

251

1

다른 풀이 방식

0

314

1

크루스칼 vs 프림

0

303

1

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

0

234

1