fork(1) download
  1. #include <iostream>
  2. #include <stdio.h>
  3. using namespace std;
  4.  
  5.  
  6. char star[2187][2187];
  7.  
  8. int blank(int r, int c, int d) {
  9. for (int t1 = r; t1 < r+d; t1++)
  10. for (int t2 = c; t2 < c + d; t2++)
  11. star[t1][t2] = ' ';
  12.  
  13. return 0;
  14. }
  15.  
  16. int stemp(int N, int row, int col) {
  17.  
  18. // 이 부분 없으면 메모리 초과
  19. if (N < 3)
  20. return 0;
  21.  
  22. int div = N / 3;
  23.  
  24. // row과 col을 각각 3부분으로 분리하여 3x3 형태로 만든다.
  25. for (int i = 0; i < 3; i++) {
  26. for (int j = 0; j < 3; j++) {
  27.  
  28. // 3x3에서 중심이면 ' '을 할당
  29. if (i == 1 && j == 1)
  30. blank(row + div, col + div, div);
  31.  
  32. // 재귀함수를 사용해 중심을 제외한 나머지들의 중심을 찾아 ' '으로 바꾼다.
  33. else
  34. stemp(div, row + div * i, col + div * j);
  35. }
  36. }
  37. }
  38.  
  39. int main() {
  40.  
  41. int N;
  42. scanf("%d", &N);
  43.  
  44. // 배열 원소 모두 '*'으로 초기화
  45. for (int i = 0; i <= N; i++) {
  46. for (int j = 0; j <= N; j++) {
  47. star[i][j] = '*';
  48. }
  49. }
  50.  
  51. // 함수 호출
  52. stemp(N, 0, 0);
  53.  
  54. // 결과 출력
  55. for (int i = 0; i < N; i++) {
  56. for (int j = 0; j < N; j++) {
  57. printf("%s", star[i][j]);
  58. }
  59. printf("\n");
  60. }
  61. }
Time limit exceeded #stdin #stdout 5s 4232KB
stdin
27
stdout
Standard output is empty