배운 것
1. memset(d,-1,sizeof(d));
2. goal 지점이 있어서 예외처리를 해줘야하나 생각했는데 그냥 cout goal지점 좌표를 해주면 되는거였음..
정답 풀이
#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
int d[300][300];
int dx[] = {-2,-1,1,2,2,1,-1,-2};
int dy[] = {1,2,2,1,-1,-2,-2,-1};
int main() {
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
int sx,sy;
cin >> sx >> sy;
int ex,ey;
cin >> ex >> ey;
memset(d,-1,sizeof(d));
queue<pair<int,int>> q;
q.push(make_pair(sx,sy));
d[sx][sy] = 0;
while (!q.empty()) {
int x = q.front().first;
int y = q.front().second;
q.pop();
for (int k=0; k<8; k++) {
int nx = x+dx[k];
int ny = y+dy[k];
if (0 <= nx && nx < n && 0 <= ny && ny < n) {
if (d[nx][ny] == -1) {
d[nx][ny] = d[x][y] + 1;
q.push(make_pair(nx,ny));
}
}
}
}
cout << d[ex][ey] << '\n';
}
return 0;
}
'Algorithm > C++' 카테고리의 다른 글
[백준 1159] 농구 경기 (0) | 2022.07.27 |
---|---|
[이코테] 숫자 카드 게임(그리디) (0) | 2022.06.29 |
[이코테] 큰 수의 법칙(그리디) - 예제 3-2 (0) | 2022.06.21 |
[이코테] 미로 탈출(DFS/BFS) - 예제 5-11 (0) | 2022.06.20 |
[이코테] 음료수 얼려먹기(DFS/BFS) - 예제 5-10 (0) | 2022.06.20 |
댓글