Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 그리디
- Algorithm
- sw expert academy
- 맛집
- 해커랭크
- 동적 계획법
- 구현
- 스택
- koitp
- 에라토스테네스의 체
- 브루트포스
- DP
- 삼성 SDS 대학생 알고리즘 특강
- dynamic programming
- 백트래킹
- 알고리즘
- BOJ
- SWEA
- 잠실
- 소수
- 삼성 기출
- 다이나믹 프로그래밍
- C++
- PS
- 완전탐색
- 시뮬레이션
- dfs
- BFS
- hackerrank
- 백준
Archives
- Today
- Total
펭로그
[C++] 백준 BOJ 7562 나이트의 이동 본문
문제링크 : https://boj.kr/7562
(시작점) -> (끝점)까지 나이트가 갈 수 있는 경로의 최단거리를 구하는 문제로 이동 가능한 8방향으로 BFS를 돌리면 풀 수 있다.
장애물 없이 오로지 도달만 하면 되기 때문에 방문 체크를 위한 배열 visited만 선언해주었다.
방문 조건은 (0,0) ~ (len-1, len-1)의 범위로만 한정하였다.
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 48 49 50 51 52 53 54 55 56 57 58 59 60 | // BOJ 7562 나이트의 이동 #include <iostream> #include <queue> #include <vector> using namespace std; const int dx[] = {-2, -2, -1, -1, 1, 1, 2, 2}; const int dy[] = {-1, 1, -2, 2, -2, 2, -1, 1}; struct pt { int x, y, cnt; pt() { cnt = 0; } pt(int a, int b, int c) { x = a, y = b, cnt = c; } }; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); freopen("../input.txt", "r", stdin); int tc; cin >> tc; while (tc--) { int len, ans; cin >> len; vector<vector<int> > visited(len, vector<int>(len, false)); pt S, E; cin >> S.x >> S.y; cin >> E.x >> E.y; visited[S.x][S.y] = true; queue<pt> Q; Q.push(S); while (!Q.empty()) { pt cur = Q.front(); Q.pop(); if (cur.x == E.x && cur.y == E.y) { ans = cur.cnt; break; } for (int i = 0; i < 8; i++) { int x = cur.x + dx[i]; int y = cur.y + dy[i]; if ((x >= 0 && x < len && y >= 0 && y < len) && !visited[x][y]) { visited[x][y] = true; Q.push({x, y, cur.cnt + 1}); } } } cout << ans << '\n'; } return 0; } | cs |
'Study > PS(Algorithm)' 카테고리의 다른 글
Codeforces Round #509 (Div. 2) 후기 (0) | 2018.09.16 |
---|---|
[C++] 백준 BOJ 14503 로봇 청소기 (0) | 2018.09.14 |
[C++] 백준 BOJ 9465 스티커 (0) | 2018.09.13 |
[C++] 백준 BOJ 2805 나무 자르기 (0) | 2018.09.11 |
[C++] 백준 BOJ 2110 공유기 설치 (실패) (0) | 2018.09.07 |
Comments