본문 바로가기

알고리즘 문제 풀이/Baekjoon

1074 - Z

반응형
SMALL

 

 

1074번: Z

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

www.acmicpc.net

#include <stdio.h>

int N, r, c;
int res;

int sqrt(int num, int N) {
  int n = 0;
  int res = 1;

  for (int n = 0; n < N; ++n) {
    res *= num;
  }

  return res;
}

void init() {
  scanf("%d %d %d", &N, &r, &c);
}

void cal(int cs, int rs, int ce, int re) {
  int cm = (cs + ce) / 2;
  int rm = (rs + re) / 2;

  if (cs == ce && cs == c && rs == re && rs == r) {
    return;
  }

  if (r <= rm && c <= cm) {
    cal(cs, rs, cm, rm);
  } else if (r <= rm && cm < c) {
    res += sqrt(cm - cs + 1, 2);
    cal(cm + 1, rs, ce, rm);
  } else if (rm < r && c <= cm) {
    res += sqrt(cm - cs + 1, 2) * 2;
    cal(cs, rm + 1, cm, re);
  } else {
    res += sqrt(cm - cs + 1, 2) * 3;
    cal(cm + 1, rm + 1, ce, re);
  }
}


int main(void) {
  // freopen("1074.txt", "r", stdin);

  init();

  cal(0, 0, sqrt(2, N) - 1, sqrt(2, N) - 1);

  printf("%d", res);

  return 0;
}

 

쉽지 않은 문제, 골드 수준 되지 않나?

반응형
LIST

'알고리즘 문제 풀이 > Baekjoon' 카테고리의 다른 글

3006 - 터보소트  (1) 2023.12.27
1395 - 스위치  (1) 2023.12.26
19646 - Random Generator  (0) 2023.12.24
1849 - 순열  (0) 2023.12.24
18110 - solved.ac  (1) 2023.12.23