강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

김용진님의 프로필 이미지
김용진

작성한 질문수

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

86. 피자 배달 거리(DFS활용)

Compiler 차이에 따른 디버깅차이

해결된 질문

작성

·

293

0

수업 잘듣고 있습니다.

다름이 아니라 86번문제를 강좌듣기전에 풀어보았습니다. 아래의 코드를 visual스튜디오에서 돌리면 정답까지 잘 출력하는데, 수업 컴파일러인 dev c++에서는 f9를 누르자마자 아래 사진처럼 에러가 납니다.  visual 스튜디오에서만 돌아가는게 찝찝합니다. 만약 코딩테스트 칠때에도 dev c++과 비슷한 컴파일러일까봐 두렵습니다. 어떤점이 dev c++에 에러를 뜨게 하는건가요?

#include<iostream>

#include<string>

#include<vector>

#include<stack>

#include<algorithm> 

#include<queue>

using namespace std;

int n, m, answer = 2147000000;

int ch[13];

int road[51][51];

vector<pair<int, int> > pizza, house;

int distance(const pair<int, int>& a, const pair<int, int>& b)

{

return abs(a.first - b.first) + abs(a.second - b.second);

}

void DFS(int idx, int cnt)

{

int dis;

if (cnt == m)

{

int sum = 0;

for (int i = 0; i < house.size(); i++)

{

dis = 2147000000;

for (int j = 0; j < pizza.size(); j++)

{

if (ch[j] == 1)

{

dis = min(dis, distance(house[i], pizza[j]));

}

}

sum += dis;

}

if (answer > sum) answer = sum;

return;

}

else if (idx == pizza.size())

{

return;

}

else

{

ch[idx] = 1;

DFS(idx + 1, cnt + 1);

ch[idx] = 0;

DFS(idx + 1, cnt);

}

}

int main()

{

cin >> n >> m;

for (int i = 0; i < n; i++)

{

for (int j = 0; j < n; j++)

{

cin >> road[i][j];

if (road[i][j] == 2)

{

pizza.push_back(make_pair(i, j));

}

else if (road[i][j] == 1)

{

house.push_back(make_pair(i, j));

}

}

}

DFS(0, 0);

cout << answer;

return 0;

}

답변 1

1

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

위 코드는 DEV-C++의 GCC 컴파일러에서 전혀 에러가 없는 코드입니다. 

섹션 5의 첫 번째 영상에 DEV-C++에서 컴파일러 업그레드 방법을 알려드립니다. C++ 14 버젼으로 업그레드 하고 다시 컴파일해보세요. 그리고 데브로 하다보면 간혹 에러가 없는 코드도 이런일이 발생합니다. 그럴때는 그냥 에러 파일을 닫으시고 다시 컴파일해보세요. 그럼 잘 컴파일 될 겁니다.

대부분의 채점 서버의 컴파일러는 GCC 컴파일러인 경우가 많습니다. 그러니 비쥬얼 스튜디오 보다는 데브에서 하기를 권장합니다.

김용진님의 프로필 이미지
김용진

작성한 질문수

질문하기