๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 1331๋ฒˆ - ๋‚˜์ดํŠธ ํˆฌ์–ด

by dkswnkk 2022. 5. 8.

๋ฌธ์ œ

 

1331๋ฒˆ: ๋‚˜์ดํŠธ ํˆฌ์–ด

๋‚˜์ดํŠธ ํˆฌ์–ด๋Š” ์ฒด์ŠคํŒ์—์„œ ๋‚˜์ดํŠธ๊ฐ€ ๋ชจ๋“  ์นธ์„ ์ •ํ™•ํžˆ ํ•œ ๋ฒˆ์”ฉ ๋ฐฉ๋ฌธํ•˜๋ฉฐ, ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฐฉ๋ฌธํ•˜๋Š” ์นธ์—์„œ ์‹œ์ž‘์ ์œผ๋กœ ๋Œ์•„์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ์ด๋‹ค. ๋‹ค์Œ ๊ทธ๋ฆผ์€ ๋‚˜์ดํŠธ ํˆฌ์–ด์˜ ํ•œ ์˜ˆ์ด๋‹ค. ์˜์‹์ด๋Š” 6×

www.acmicpc.net

 

์ฝ”๋“œ

#include <iostream>
using namespace std;


int map[6][6];
int visited[6][6];

int dx[8] = {-1,-1,1,1,-2,-2,2,2};
int dy[8] = {-2,2,-2,2,-1,1,-1,1};


char check_alpha(char c){
    if(c=='A') return 0;
    if(c=='B') return 1;
    if(c=='C') return 2;
    if(c=='D') return 3;
    if(c=='E') return 4;
    if(c=='F') return 5;
    return 0;
}

int check_num(int i){
    if(i==6) return 0;
    if(i==5) return 1;
    if(i==4) return 2;
    if(i==3) return 3;
    if(i==2) return 4;
    if(i==1) return 5;
    return 0;
}

bool valid(int before_y, int before_x, int now_y, int now_x){
    for(int i=0; i<8; i++){
        int ny = before_y + dy[i];
        int nx = before_x + dx[i];
        if(nx==now_x && ny==now_y) return true;
    }
    return false;
}
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    int start_y, start_x;
    for(int i=0; i<36; i++){
        string inp; cin>>inp;
        
        int before_y, before_x;
        char c = inp[0];
        int y = check_num(inp[1]-'0');
        int x = check_alpha(c);
        
        if(i==0){
            before_y = y;
            before_x = x;
            start_y = y;
            start_x = x;
            continue;
        }
        
        if(i==35){
            if(visited[y][x]||!valid(start_y, start_x, y,x)){
                cout<<"Invalid";
                return 0;
            }
        }
        
        if(!visited[y][x]){
            if(valid(before_y, before_x, y,x)){
                visited[y][x] = 1;
                before_y = y;
                before_x = x;
            }
            else{
                cout<<"Invalid";
                return 0;
            }
        }
        else{
            cout<<"Invalid";
            return 0;
        }
    }
    cout<<"Valid";

 

ํ’€์ด

"๋‚˜์ดํŠธ ํˆฌ์–ด๋Š” ์ฒด์ŠคํŒ์—์„œ ๋‚˜์ดํŠธ๊ฐ€ ๋ชจ๋“  ์นธ์„ ์ •ํ™•ํžˆ ํ•œ ๋ฒˆ์”ฉ ๋ฐฉ๋ฌธํ•˜๋ฉฐ, ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฐฉ๋ฌธํ•˜๋Š” ์นธ์—์„œ ์‹œ์ž‘์ ์œผ๋กœ ๋Œ์•„์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ์ด๋‹ค."

์ฐจ๊ทผ์ฐจ๊ทผ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์— ๋”ฐ๋ผ๊ฐ€๋ฉด์„œ ๊ตฌํ˜„ํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋จผ์ € ์ฒด์Šค ๋ง์˜ ์ž…๋ ฅ ์œ„์น˜๊ฐ€ 2์ฐจ์› ๋ฐฐ์—ด์˜ ์–ด๋А ์ขŒํ‘œ์ธ์ง€ ๊ณ„์‚ฐํ•˜์˜€๊ณ , ํ˜„์žฌ ๋†“์„ ์œ„์น˜๊ฐ€ ์ด์ „์— ๋†“์€ ์œ„์น˜์—์„œ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์ธ์ง€๋ฅผ validํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ํŒ๋ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ •ํ™•ํžˆ ๋ชจ๋“  ์นธ์„ ํ•œ ๋ฒˆ์”ฉ๋งŒ ๋ฐฉ๋ฌธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— visited ๋ฐฐ์—ด์„ ํ†ตํ•ด ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์˜€๊ณ , ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฐฉ๋ฌธํ•˜๋Š” ์ง€์ ์ผ ๊ฒฝ์šฐ ์ œ์ผ ์ฒ˜์Œ ์ง€์ ๊ณผ ๋น„๊ตํ•˜์—ฌ validํ•จ์ˆ˜์—์„œ ํŒ๋ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€