블로그 언저리인 무언가
[백준/BOJ] 1074 Z 본문
728x90
문제 : 1074 Z
2차원 배열을 Z자 모양으로 순회 헸을 때
주어진 좌표를 몇 번째로 방문하는지 출력하는 문제이다.
x, y좌표의 기준과 현재 나눌 정사각형의 한 변의 길이를 정보로 주고
분할 정복을 이용해 해결하면 된다.
Code
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll N, r, c;
ll f(ll x, ll y, ll len){
if (len==0)
return 0;
if (r<x && c<y)
return f(x-len/2,y-len/2,len/2);
else if (r<x && c>=y)
return pow(len,2)+f(x-len/2,y+len/2,len/2);
else if (r>=x && c<y)
return pow(len,2)*2+f(x+len/2,y-len/2,len/2);
else if (r>=x && c>=y)
return pow(len,2)*3+f(x+len/2,y+len/2,len/2);
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> r >> c;
cout << f(1<<N, 1<<N, 1<<N);
return 0;
}
728x90
'Programming > BOJ' 카테고리의 다른 글
[백준/BOJ] 9375 패션왕 신혜빈 (0) | 2020.12.01 |
---|---|
[백준/BOJ] 1080 행렬 (0) | 2020.11.29 |
[백준/BOJ] 1138 한 줄로 서기 (0) | 2020.11.23 |
[백준/BOJ] 18115 카드 놓기 (1) | 2020.11.20 |
[백준/BOJ] 2529 부등호 (0) | 2020.11.19 |
Comments