달팽이 배열

정사각형
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <stdio.h>

int main(void){
 int arr_size;
 printf("ex 1) ");
 scanf("%d", &arr_size);
 int arr[100][100] = { 0 };
 int i = 0, j = 0, num = 1, counter = 0;
 int direction = 0;//0 for right side, 1 for down side, 2 for left side, 3 for up side
 while (num <= arr_size*arr_size){
  arr[i][j] = num;

  if (direction == 0){
   if (arr[i][j + 1] == 0 && j < arr_size-1){
    j++;
    counter = 0;
   }
   else{
    counter++;
    direction = 1;
    i++;
   }
  }//오른쪽으로 진행

  else if (direction == 1){
   if (arr[i + 1][j] == 0 && i < arr_size-1){
    i++;
    counter = 0;
   }
   else{
    counter++;
    direction = 2;
    j--;
   }
  }//아래쪽으로 진행

  else if (direction == 2){
   if (arr[i][j-1] == 0 && j > 0){
    j--;
    counter = 0;
   }
   else{
    counter++;
    direction = 3;
    i--;
   }
  }//왼쪽으로 진행

  else if (direction == 3){
   if ( arr[i - 1][j] == 0 && i > 0){
    i--;
    counter = 0;
   }
   else{
    counter++;
    direction = 0;
    j++;
   }
  }//위쪽으로 진행
  num++;
 }

 for (i = 0; i<arr_size; i++){
  for (j = 0; j<arr_size; j++){
   printf("%3d ", arr[i][j]);
  }
  printf("\n");
 }//출력
 return 0;
}
직사각형
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <stdio.h>

int main(void){
 int arr_size_h, arr_size_w;
 printf("ex 1) ");
 scanf("%d %d", &arr_size_h, &arr_size_w);
 int arr[100][100] = { 0 };
 int i = 0, j = 0, num = 1, counter = 0;
 int direction = 0;//0 for right side, 1 for down side, 2 for left side, 3 for up side
 while (num <= arr_size_w*arr_size_h){
  arr[i][j] = num;

  if (direction == 0){
   if (arr[i][j + 1] == 0 && j < arr_size_w-1){
    j++;
    counter = 0;
   }
   else{
    counter++;
    direction = 1;
    i++;
   }
  }//오른쪽으로 진행

  else if (direction == 1){
   if (arr[i + 1][j] == 0 && i < arr_size_h-1){
    i++;
    counter = 0;
   }
   else{
    counter++;
    direction = 2;
    j--;
   }
  }//아래쪽으로 진행

  else if (direction == 2){
   if (arr[i][j-1] == 0 && j > 0){
    j--;
    counter = 0;
   }
   else{
    counter++;
    direction = 3;
    i--;
   }
  }//왼쪽으로 진행

  else if (direction == 3){
   if ( arr[i - 1][j] == 0 && i > 0){
    i--;
    counter = 0;
   }
   else{
    counter++;
    direction = 0;
    j++;
   }
  }//위쪽으로 진행
  num++;
 }

 for (i = 0; i<arr_size_h; i++){
  for (j = 0; j<arr_size_w; j++){
   printf("%3d ", arr[i][j]);
  }
  printf("\n");
 }//출력
 return 0;
}

Comments

Popular Posts