1074번: Z

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

www.acmicpc.net


  1. 4사분면으로 나누어서 해당되는 면을 찾는다.
  2. 앞에 면을 다 더해줌 - 1사분면 (x) / 2사분면 (1) / 3사분면 (1,2,4) / 4사분면 (1,2)
  3. 점점 쪼개서 같은방식으로 구한다
import sys

N, R, C = map(int, input().split())
answer = 0

while(True):
    quarter = (2**N)//2
    if N == 1:
        if R == 0 and C == 1:
            answer += 1
        elif R == 1 and C == 0:
            answer += 2
        elif R == 1 and C == 1:
            answer += 3
        break
    else:
        cnt = 0
        if R < quarter and C >= quarter:
            cnt = 1
            C -= quarter
        elif R >= quarter and C < quarter:
            cnt = 2
            R -= quarter
        elif R >= quarter and C >= quarter:
            cnt = 3
            C -= quarter
            R -= quarter
        answer += (quarter**2)*cnt
    N -= 1

print(answer)
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기