Notice
Recent Posts
Recent Comments
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

블로그 언저리인 무언가

[백준/BOJ] 1074 Z 본문

Programming/BOJ

[백준/BOJ] 1074 Z

he1fire 2020. 11. 29. 00:59
728x90

문제 : 1074 Z

 

1074번: Z

한수는 2차원 배열 (항상 2^N * 2^N 크기이다)을 Z모양으로 탐색하려고 한다. 예를 들어, 2*2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. 만약, 2차원

www.acmicpc.net

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