알고리즘/백준
[백준] 1074. Z
빙빙
2021. 3. 7. 22:01
코드 알고리즘
1.계속해서 4분할을 한다
2.길이가 2가 되면 더이상 분할할 수 없기 때문에 여기서 작은 사각형에서 왼쪽위->오른쪽위->왼쪽아래->오른쪽아래 (Z모양 순서)순서로 cnt +=1 해주며 찾아준다.
cnt = 0
def func(a,x,y):
global cnt
if a == 2:
if x == r and y == c: #왼쪽 위
print(cnt)
return
cnt += 1
if x == r and y + 1 == c: #오른쪽 위
print(cnt)
return
cnt += 1
if x+1 == r and y == c: # 왼쪽아래
print(cnt)
return
cnt += 1
if x+1 == r and y+1 == c: #오른쪽 아래
print(cnt)
return
cnt += 1
else:
func(a//2, x, y)# 첫번째 사각형(왼쪽 위)
func(a//2,x, y + a//2) #두번째 (오른쪽 위)
func(a // 2, x + a //2, y ) # 세번째(왼쪽 아래)
func(a // 2, x + a // 2, y + a // 2) # 네번째 (오른쪽 아래)
N, r, c = map(int,input().split())
num = 2**N #num은 한변의 길이
func(num,0,0)
#좌표 r,c에 있는 cnt수를 출력해야한다.