(백준) 7562 기사의 움직임 관련 이미지

(백준) 7562 기사의 움직임


7562 기사의 움직임 관련 대표 이미지

문제 설명

https://www.acmicpc.net/problem/7562

No.7562 기사의 무브먼트

기사가 보드에 배치됩니다. 말이 한 번에 이동할 수 있는 사각형은 아래 그림과 같습니다. 기사가 이동하려는 사각형을 제공합니다. 기사는 단 몇 걸음이면 이 광장으로 이동할 수 있습니다.

www.acmicpc.net

기사가 보드에 배치되고 기사가 한 번에 이동할 수 있는 사각형이 주어지면 기사가 해당 사각형으로 몇 번 이동할 수 있는지 알아보십시오.

문제를 풀다

최단 거리를 찾는 문제이므로 bfs를 사용하여 해결할 수 있습니다.

1차원적 숨바꼭질과 달리 2차원적일 뿐인 백준 1697호 숨바꼭질과 비슷한 문제다.

먼저 기사가 움직일 수 있는 범위는 다음과 같다.

  • (-2, -1), (-2, 1), (-1, -2), (-1, 2), (1, -2), (1, 2), (2, -1), (이십 일)

기사 이동 횟수를 포함하는 배열 arr을 선언하고 -1로 초기화합니다.

큐가 비워질 때까지 while 문을 반복하는 기존 bfs 문제와 달리 이 문제는 해당 위치에 값이 들어갈 때 while 문을 종료합니다.

대기열에서 현재 말이 있는 사각형을 시작점으로 하고 while문을 실행하여 이동 횟수를 동시에 업데이트합니다.

while 문이 끝나면 해당 셀에 값을 출력합니다.

소스 코드

#include <iostream>
#include <queue>
#include <utility>

using namespace std;

int t, n;

int x, y, x2, y2;

int arr(301)(301);

int dy(8) = { -2, -2, -1, -1, 1, 1, 2, 2 };
int dx(8) = { -1, 1, -2, 2, -2, 2, -1, 1 };

int main()
{
    cin >> t;
    
    while (t--)
    {
        cin >> n;
        cin >> x >> y;
        cin >> x2 >> y2;
    
        for (int i = 0; i < n; i++)
            fill(arr(i), arr(i) + n, -1);
            
        queue<pair<int, int>> q;
        q.push({y, x});
        
        arr(y)(x) = 0;
        
        while (arr(y2)(x2) == -1)
        {
            int yy = q.front().first;
            int xx = q.front().second;
            
            q.pop(); 
            
            for (int i = 0; i < 8; i++)
            {
                int ny = yy + dy(i);
                int nx = xx + dx(i);
                
                if (ny < 0 || nx < 0 || ny >= n || nx >= n)
                    continue;
                if (arr(ny)(nx) != -1)
                    continue;
                arr(ny)(nx) = arr(yy)(xx) + 1;
                q.push({ny, nx});
            }
        }
        printf("%d\n", arr(y2)(x2));
    }
    return 0;
}

Similar Posts

  • 자동차 환불 확인

    휴면 상태의 “환급되지 않는 채권”을 찾을 수 있습니다. 행정안전부는 “미납된 지역개발채권 전액을 상환하겠다”고 밝혔다. 지역개발채권이란 지방자치단체에 차량을 등록하고 각종 인허가를 받고 건설·용역·상품 계약을 체결할 때 주민들이 매입해야 하는 채권을 말한다. 지금은 시스템이 개선됐다고 하니 확인하실 필요가 없습니다. 보도자료를 보시려면 아래 링크를 참고하세요. 상환되지 않은 휴면 채권을 찾습니다.pdf 0.62MB 자동차 반납 문의 일반적으로 차를 살 때…

  • 페이스괄호바른생활주식회사 물소뿔괄호로 얼굴마사지

    페이스괄호바른생활주식회사 물소뿔괄호로 얼굴마사지@사진/멍ㅇ 안녕하세요 네이버 뷰스타 몬지입니다 어디가는걸 별로 안좋아하고 집에서 모든걸 해결하고 싶은 집순이라 셀프홈케어를 선호하는 편이에요!요즘 홈케어에서 괄사로 얼굴 마사지를 해주고 있어요.피부관리실에서도 페이스괄호를 사용해서 관리를 하기도 하는데요! 다양한 괄호가 달린 도구들이 있는데 물소뿔 소재가 좋고 그립감도 뛰어나다고 해서 저도 한번 써봤어요!그립감은 물론 물소뿔 소재인 페이스괄호 바른생활주식회사 물소뿔괄호 사용후기를 보여드리겠습니다.바른생활주식회사 물소뿔괄호 모서리나 표면이 매끄러운…

  • 내가 네 엄마를 어떻게 만났니 S1,1-11

    내가 당신의 어머니를 만난 방법 내가 그녀를 만났을 때 시즌 1, 에피소드 1-11 대본 해석 11부입니다. 내가 당신의 어머니를 만난 방법 시즌 1-1 #11 -준비가 되어도 안되지만 준비가되면 “좋아, 준비 됐어! 그녀는 어디 있니?” – 준비가 되어 있어도 준비가 안 된 상태지만 ‘준비됐어! 그녀는 어디 있습니까? ‘ ~의 – 그녀는 바로 거기에 있습니다. – 하지만…

  • [Abstract]행운의 전조 | 공자와 맹자의 인용문:: with AI

    > 영문 초록 (요약) 이번 영상에서는 성공하기 전에 힘이 되어줄 공자와 맹자의 명언을 배웁니다.대부분의 성공한 사람들은 한 가지 공통점이 있습니다. 그들은 많은 고통을 겪었습니다.그래서 지금 어려운 상황에 처해 있어도 포기하지 않는다면 결국에는 성공할 수 있습니다.공자께서 말씀하시기를 “하늘의 큰 일은 먼저 그들의 마음과 마음을 감동시켜 고통을 주고, 굶주리고, 가난하게 하고, 그들의 욕망을 흔드는 것이어야 한다. 그들이…

  • 고용보험 실업급여 조건 자격 신청방법 (금액 자진퇴사 가능 여부 고용보험 홈페이지)

    실업 보험 혜택 자격 및 신청 방법 실업급여를 받기 위해서는 실업급여 신청 자격요건을 확인해야 합니다. 실업 수당을 받을 자격이 있는지 확인하는 과정은 규정상으로는 간단하지만 실제로 가능한지 확인하는 것은 조금 더 어려울 수 있습니다. 고용보험 홈페이지 바로가기 고용보험 실업급여 수급자격 실업급여 구직급여를 받을 수 있는 조건은 고용보험법에 규정되어 있는데 고용보험법 제40조를 간략히 요약하면 다음 5가지 조건입니다….

  • 4월 7일 ~ 4월 10일

    4월 7일 금요일 저녁 식사 후 아무 문제 없이 새벽 4시에 일어나 하루를 시작했습니다. 그런데 이 즈음부터 시작된 감기가 문제가 되기 시작해서 주말 내내 시체처럼 누워있었는데 월요일 아침에 일어나니 아침부터 스케줄이 괜찮았다. 물론 토,일,월요일 오전 체조는 진행하지 않았고, 낙상상태가 아직 회복되지 않아 걱정이 되었습니다. 이제 나이가 들거나 감기에 걸리면 이번주는 건강관리에 더 신경을 써야 할…