백준1074 - Z
전략
찾는 좌표가 현재 사각형에 존재하면 현재 사각형의 1/4 크기만큼 탐색을 진행한다.
원하는 좌표가 나오면 해당 부분에서 탐색을 중지하고 찾았다는 변수를
True
로 바꾼다.찾는 좌표가 현재 사각형에 존재하지 않으면 현재 정사각형 면적을 더한다.
코드
from sys import stdin, stdout
N, r, c = list(map(int, stdin.readline().split(' ')))
findFlag = False
cnt = 0
def divideAndConquer(N, x, y):
global findFlag
global cnt
if findFlag:
return
if x == r and y == c:
findFlag = True
if x <= r < x + N and y <= c < y + N:
divideAndConquer(N // 2, x, y)
divideAndConquer(N // 2, x, y + N // 2)
divideAndConquer(N // 2, x + N // 2, y)
divideAndConquer(N // 2, x + N // 2, y + N // 2)
else:
cnt += N * N
divideAndConquer(2 ** N, 0, 0)
stdout.write(str(cnt) + '\\n')
Last updated