์๊ฐ ์ ํ | ๋ฉ๋ชจ๋ฆฌ ์ ํ | ์ ๋ต ๋น์จ |
1 ์ด | 256 MB | 43.859% |
๋ฌธ์
์ฒด์คํ ์์ ๋์ดํธ๋ฅผ ๋ช ๋ฒ ์์ง์ฌ ํ์ฌ ์์น์์ ๋ชฉ์ ์ง๊น์ง ๊ฐ ์ ์๋์ง ํ ์๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์ ์ด๋ค.
๋์ดํธ์ ์ด๋์ ์ธ๋ฑ์ค๋ก ํํํ์ฌ dx, dy ๋ผ๋ ๋ฐฐ์ด์ ์ ์ฅํด๋์๊ณ ๋ฐ๋ณต๋ฌธ์ ๋๋ฉด์ ํด๋น ์ธ๋ฑ์ค์์ ๋ช ๋ฒ์งธ ์ด๋์ด์๋์ง๋ฅผ chk[][]์ ์ ์ฅํ๊ณ , ํด๋น ์ธ๋ฑ์ค๊ฐ ๋ชฉ์ ์ง์ ๊ฐ๋ค๋ฉด ํจ์๋ฅผ ๋๋ด๊ณ ๋ต์ ์ถ๋ ฅํ๋ค.
์ํ์ฐฉ์ค
๊ณ์ ๋ง๋๋ฐ ์ ํ๋ฆด๊น ํ๋๋ dx ๋ฅผ ๊ณ์ int dx[] = { -2,-1,1,2,2,1,-1,-1 } ๋ก ์ฐ๊ณ ์์๋ค. ์ ๋๋ก ๊ณ ์น๊ณ ์ฑ๊ณต. ๋๋ฌด๋๋ ํ๋ฌดํ๋ค. ๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ ์ค์ํ์ง ์๊ฒ ๊ผผ๊ผผํ๊ฒ ํ์ธํ์.
๋ฉ๋ชจ๋ฆฌ | ์๊ฐ |
2352 KB | 20 ms |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#include<iostream>
#include<string.h>
#include<queue>
using namespace std;
typedef pair<int, int> p;
int dx[] = { -2,-1,1,2,2,1,-1,-2 }, dy[] = { 1,2,2,1,-1,-2,-2,-1 };
int t, n, chk[305][305], ans;
p start, destination;
void bfs(int x, int y) {
if (x == destination.first && y == destination.second) {
ans = 0;
return;
}
queue <p> q;
q.push({ x, y });
chk[x][y] = 0;
while (!q.empty()) {
int r = q.front().first, c = q.front().second;
q.pop();
for (int i = 0; i < 8; i++) {
int nr = r + dx[i], nc = c + dy[i];
if (nr < 0 || nr >= n || nc < 0 || nc >= n) continue;
if (chk[nr][nc] > 0) continue;
chk[nr][nc] = chk[r][c] + 1;
if (nr == destination.first && nc == destination.second) {
ans = chk[nr][nc]; return;
}
q.push({ nr, nc });
}
}
}
int main() {
scanf("%d", &t);
while (t--) {
scanf("%d", &n);
scanf("%d %d %d %d", &start.first, &start.second, &destination.first, &destination.second);
memset(chk, -1, sizeof(chk));
ans = 0;
bfs(start.first, start.second);
printf("%d\n", ans);
}
return 0;
}
|
cs |
์ฐธ๊ณ ์ฌํญ
for ๋ฌธ์ ์๋์ ๊ฐ์ด ์์ฑํ๊ฒ ๋๋ฉด ์ฝ๋๋ ์กฐ๊ธ ์ค์ด๋ค์ง ๋ชฐ๋ผ๋ ์๊ฐ์ 4 ms ๋งํผ ์ฆ๊ฐํ๋ค!
1
2
3
4
5
6
7
8
9
10
11
|
for (int i = 0; i < 8; i++) {
int nr = r + dx[i], nc = c + dy[i];
if (nr >= 0 && nr < n && nc >= 0 && nc < n && chk[nr][nc] < 0) {
chk[nr][nc] = chk[r][c] + 1;
if (nr == destination.first && nc == destination.second) {
ans = chk[nr][nc]; return;
}
q.push({ nr, nc });
}
}
|
cs |
'๐ฅ PS(Problem Solving) ๐ฅ > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] #2589 ๋ณด๋ฌผ์ฌ (0) | 2019.10.13 |
---|---|
[BOJ] #3187 ์์น๊ธฐ ๊ฟ (0) | 2019.10.13 |
[BOJ] #16236 ์๊ธฐ ์์ด (0) | 2019.10.11 |
[BOJ] #17144 ๋ฏธ์ธ๋จผ์ง ์๋ ! (0) | 2019.10.10 |
[BOJ] #14500 ํ ํธ๋ก๋ฏธ๋ ธ (0) | 2019.10.10 |
๋๊ธ