1074번: Z
한수는 2차원 배열 (항상 2^N * 2^N 크기이다)을 Z모양으로 탐색하려고 한다. 예를 들어, 2*2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. 만약, 2차원 ��
www.acmicpc.net
def recur(size, cnt=0, x=0, y=0):
global res
if size == 1:
if x == R and y == C:
res = cnt
cnt += 1
return cnt
size //= 2
for i, j in [(x, y), (x, y+size), (x+size, y), (x+size, y+size)]:
# 가지치기 추가: 4분면 중 1개만 탐색한다
if (i <= R < i+size) and (j <= C < j+size):
cnt = recur(size, cnt, i, j)
else:
cnt += size * size
return cnt
N, R, C = map(int, input().split())
res = 0
recur(2 ** N)
print(res)
'BOJ 알고리즘 (패캠) > 자료구조, 구현' 카테고리의 다른 글
7490번: 0 만들기 (구현, 재귀) - Fastcampus (0) | 2020.10.05 |
---|---|
2747번: 피보나치 수 (구현, 재귀) - Fastcampus (0) | 2020.10.05 |
4195번: 친구 네트워크 (구현, 해시, dict, 분리집합) - Fastcampus (0) | 2020.10.04 |
1920번: 수 찾기 (구현, 해시, set) - Fastcampus (0) | 2020.10.04 |
10930번: SHA-256 (구현, 해시, hashlib) - Fastcampus (0) | 2020.10.04 |