문제

www.acmicpc.net/problem/1074

 

1074번: Z

한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. 만약, N > 1이 라서

www.acmicpc.net

 

문제풀이

N이 1이 될때까지,
주어진 맵을 4등분하고, 현재 숫자가 몇사분면에 있는지 확인하며 N을 줄여나간다.

 

코드

N,r,c = list(map(int,input().split()))
result = 0
while N>=1 :
    temp = 2**(N-1) - 1

    # 2사분면
    if r <= temp and c<= temp :

        N-=1
        continue

    # 1 사분면
    elif c > temp and r<=temp :

        c = c- temp-1
        result += (temp+1)*(temp+1)

    # 3 사분면 
    elif r> temp and c<= temp:

        r =r-temp-1
        result += (temp+1)*(temp+1) * 2

    # 4사분면 
    else :

        c = c- temp-1
        r = r- temp -1 
        result += (temp+1)*(temp+1) * 3
    N-=1

print(result)

'파이썬 > 백준' 카테고리의 다른 글

[python] 백준 -잃어버린 괄호  (0) 2021.01.07
[python] 백준 -가장 긴 단어  (0) 2021.01.07
[python] 백준 - 트리순회.py  (0) 2021.01.07
[python] 백준 - 저항  (0) 2021.01.07
[python] 백준 - 이항 계수 2  (0) 2021.01.07
ariz1623