Skip to main content
  1. Posts/
  2. Algorithm/

BOJ 7562 나이트의 이동

·175 words·1 min
Jiho Kim
Author
Jiho Kim
달려 또 달려

📝 문제 정보
#

🧐 관찰 및 접근
#

  • 가중치가 없으니, 간단한 BFS로 풀릴 것 같다. 시간복잡도는 $O(V + E) \approx O(N^2)$이다.

💻 풀이
#

  • 코드 (C++):
void solve(){
    int dx[8] = {-2, -2, -1, -1, 1, 1, 2, 2};
    int dy[8] = {-1, 1, -2, 2, -2, 2, -1, 1};

    int N; cin >> N;
    vector<vector<int>> board(N, vector<int>(N, -1));
    int sx, sy, ex, ey; cin >> sx >> sy >> ex >> ey;
    queue<pii> q;
    q.push({sx, sy});
    board[sx][sy] = 0;
    while(!q.empty()){
        auto [cx, cy] = q.front(); q.pop();
        if(cx == ex && cy == ey){
            cout << board[cx][cy] << "\n";
            return;
        }
        rep(d, 0, 8){
            int nx = cx + dx[d];
            int ny = cy + dy[d];
            if(nx < 0 || nx >= N || ny < 0 || ny >= N) continue;
            if(board[nx][ny] == -1){
                board[nx][ny] = board[cx][cy] + 1;
                q.push({nx, ny});
            }
        }
    }
🔒

구현 코드 잠금

아래 쿠팡 링크를 방문하시면 코드가 공개됩니다.
광고 수익이 블로그 운영에 도움이 됩니다 🙏

🛒 쿠팡 방문하고 코드 보기

방문 후 잠금이 자동으로 해제됩니다