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

[๋ฐฑ์ค€,c++] 14712๋ฒˆ - ๋„ด๋ชจ๋„ด๋ชจ (Easy)

by ์•ˆ์ฃผํ˜• 2022. 8. 20.

๋ฌธ์ œ

 

14712๋ฒˆ: ๋„ด๋ชจ๋„ด๋ชจ (Easy)

๋„ค๋ชจ๋Š” ๋ฟŒ××× ๊ฒŒ์ž„์— ๊นŠ์€ ๊ฐ๋ช…์„ ๋ฐ›์•„, ์ง์‚ฌ๊ฐํ˜• ๋ชจ์–‘์˜ ๊ฒฉ์žํŒ๊ณผ “๋„ด๋ชจ”๋ผ๋Š” ์ˆ˜์ˆ˜๊ป˜๋ผ์˜ ์ƒ๋ฌผ์„ ์ด์šฉํ•˜๋Š” “๋„ด๋ชจ๋„ด๋ชจ”๋ผ๋Š” ๊ฒŒ์ž„์„ ๋งŒ๋“ค์—ˆ๋‹ค. ์ด ๊ฒŒ์ž„์˜ ๊ทœ์น™์€ ์•„์ฃผ ๊ฐ„๋‹จํ•˜๋‹ค. ๊ฒฉ์žํŒ์˜

www.acmicpc.net

 

์ฝ”๋“œ

#include <iostream>
#include <vector>
using namespace std;

int N, M, ans;

int map[26][26];
int dx[3] = {-1,0,-1};
int dy[3] = {0,-1,-1};

bool check(int x, int y){
    int cnt = 0;
    for(int i = 0; i<3; i++){
        int nx = x+dx[i];
        int ny = y+dy[i];
        if(nx>=0 && nx < N && ny>=0 && ny< M){
            if(map[nx][ny]) cnt++;
        }
    }
    if(cnt == 3) return false;
    return true;
}


void backtracking(int x, int y){
    
    if(x == N-1 && y == M){
        ans++;
        return;
    }
    
    if(y == M){
        y = 0;
        x++;
    }
    
    map[x][y] = 1;
    if(check(x, y)) backtracking(x, y+1);   // 2*2๊ฐ€ ์•ˆ ๋งŒ๋“ค์–ด์งˆ๋•Œ ๋„ด๋ชจ๋ฅผ ์˜ฌ๋ฆฐ๋‹ค.
    map[x][y] = 0;
    backtracking(x, y+1);   // ํ˜„์žฌ์นธ์—๋Š” ๋„ด๋ชจ๋ฅผ ์˜ฌ๋ฆฌ์ง€์•Š๊ณ  ๋„˜์–ด๊ฐ„๋‹ค.
    
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    cin>>N>>M;

    backtracking(0,0);
    
    cout<<ans;
}

 

ํ’€์ด

์ฒ˜์Œ์— ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ์กฐ๊ธˆ ์–ด๋ ค์› ๋Š”๋ฐ ์ด ๋ฌธ์ œ๋Š” ๋„ด๋ชจ๊ฐ€ 2*2๊ฐ€ ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. 

๋„ด๋ชจ๋ฅผ ๋†“๋Š” ์ˆœ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.


๋„ด๋ชจ    
     
๋„ด๋ชจ ๋„ด๋ชจ  
     
๋„ด๋ชจ ๋„ด๋ชจ ๋„ด๋ชจ
     
๋„ด๋ชจ ๋„ด๋ชจ ๋„ด๋ชจ
๋„ด๋ชจ    
๋„ด๋ชจ ๋„ด๋ชจ ๋„ด๋ชจ
๋„ด๋ชจ   ๋„ด๋ชจ

๊ฒฝ์šฐ์˜ ์ˆ˜ ์นด์šดํŒ…++


์ฆ‰, ๊ฐ€๋กœ์— ๋จผ์ € ๋„ด๋ชจ๋ฅผ ๋ฐฐ์น˜ํ•˜๊ฒŒ๋” ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์œผ๋กœ ๋†“์œผ๋ฉด ํ˜„์žฌ ๋†“์€ ๋„ด๋ชจ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ขŒ์ธก, ์ƒ์ธก, ์ขŒ์ธก ๋Œ€๊ฐ์„  ์ด ์„ธ ๊ฐœ๋งŒ ๋„ด๋ชจ์ธ์ง€๋ฅผ ํ™•์ธํ•˜๋ฉด 2*2 ๋„ด๋ชจ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋Š”์ง€๋ฅผ ํŒ๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์œ„์น˜์— ๋„ด๋ชจ๋ฅผ ๋†“์•˜์„ ๋•Œ 2*2๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉด ํ˜„์žฌ ์ƒํ™ฉ์—์„œ๋Š” ์ด ์œ„์น˜์—์„œ๋Š” ๋†“์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

2*2๊ฐ€ ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ด ์œ„์น˜์— ๋†“๋Š”๊ฒฝ์šฐ์™€ ๋†“์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์‹์œผ๋กœ ๋ฐฑํŠธ๋ž™ํ‚น์„ ๋Œ๋ ค์„œ ์ตœ์ข…์ ์œผ๋กœ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€