BOJ 문제풀이

백준 1074번 c++ 풀이

koreasunoo 2021. 7. 22. 00:49
SMALL

알고리즘 분류: 분할 정복

코드:

#include <iostream>
#include <cmath>
using namespace std;
int n,r,c,ans=0;

int dx[4] = {0,0,1,1};
int dy[4] = {0,1,0,1};

void fillBoard(int n,int x,int y){
    if(n==2){
        for(int i = 0; i<4; i++){
            int nx = x + dx[i];
            int ny = y + dy[i];
            if(nx== r && ny == c){
                cout << ans;
                return;
            }
            ans++;
        }
        return;
    }
    fillBoard(n/2,x,y);
    fillBoard(n/2,x,y+n/2);
    fillBoard(n/2,x+n/2,y);
    fillBoard(n/2,x+n/2,y+n/2);
}

int main(){
    cin >> n >> r >> c;
    fillBoard(1<<n,0,0);
}
LIST

'BOJ 문제풀이' 카테고리의 다른 글

백준 1463 c++ 풀이  (1) 2021.07.28
백준 3273 c++ 풀이  (0) 2021.07.26
백준 2447번 c++ 풀이  (0) 2021.07.22
백준 1517 c++ 풀이  (0) 2021.07.22
백준 2178번 c++ 풀이  (0) 2021.07.20