백준

백준 1074 Z(Java)

Park DJ 2023. 2. 17. 14:16

https://www.acmicpc.net/problem/1074

 

1074번: Z

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

www.acmicpc.net


 

Java 코드

 


import java.util.Scanner;

public class Main {

  static int count = 0;
  
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int n = sc.nextInt();
    int r = sc.nextInt();
    int c = sc.nextInt();
    int size = (int)Math.pow(2, n);

    div(r, c, size);
    
    System.out.println(count);
  }

  public static void div(int r, int c, int size) {
    if(size == 1) return;
    
    if(r < size / 2 && c < size / 2) div(r, c, size / 2);
    else if(r < size / 2 && c >= size / 2) {
      count += size * size / 4;
      div(r, c - size / 2, size / 2);
    }
    else if(r >= size / 2 && c < size / 2) {
      count += 2 * (size * size / 4);
      div(r - size / 2, c, size / 2);
    }
    else if(r >= size / 2 && c >= size / 2) {
      count += 3 * (size * size / 4);
      div(r - size / 2, c - size / 2, size / 2);
    }
    
  }
}