백준 - Z 1074번

Z 1074번

👏 key point

쿼드트리와 비슷한 방식으로 분할정복으로 문제를 풀려고 했으나 재귀함수다 보니 계속해서 시간초과문제가 발생하였다. 그래서 그냥 반복문으로 1,2,3,4분면을 구분하여 문제를 풀었다.

🎂 코드

n,row,col=map(int, input().split())

cnt = 0

while n > 1:
    size = 2 ** (n-1)

    #1사분면에 있다면
    if row < size and col >= size:
        cnt += pow(size,2)
        col -= size
    #2사분면에 있다면
    elif row >= size and col < size:
        cnt += pow(size,2) * 2
        row -= size
    #3사분면에 있다면    
    elif row >= size and col >= size:
        cnt += pow(size,2) * 3
        row -= size
        col -= size
    
    n -= 1                
# n == 1일때

#1사분면에 있다면
if row == 0 and col == 1:
    cnt += 1
#2사분면에 있다면
elif row == 1 and col == 0:
    cnt += 2
#3사분면에 있다면    
elif row == 1 and col == 1:
    cnt += 3 

print(cnt)      

좋은 웹페이지 즐겨찾기