N By N 배열의 숫자가 빙빙 돌아가며 찍히는 형태로 출력하는것..


점심시간에 잠깐 짬내서 날 코딩 ㄱㄱ...


  1 16 15 14 13

  2 17 24 23 12

  3 18 25 22 11

  4 19 20 21 10

  5  6  7  8  9



위와 같은 형태로 출력되면 성공.......



아래는 코드 . 전문..


public class Snail {


public void run(int size) {


int[][] matrix = new int[size][size];


boolean xToRight = false;

boolean yToDown = true;


// first line (x 로 기록)

for (int x = 1; x <= size; x++) {

matrix[x - 1][0] = x;


}

int leftSize = size + 1;

int loopCount = 0;


int lastValue = size + 1;


int xPos = size;

int yPos = 1;


while (leftSize-- > 0) {

loopCount++;


// Y 방향 값

for (int innerLoop = 0; innerLoop < (size - loopCount); innerLoop++) {

if (yToDown)

yPos++;

else

yPos--;

matrix[xPos - 1][yPos - 1] = lastValue++;


}

yToDown = !yToDown;

// X 방향 값

for (int innerLoop = 0; innerLoop < (size - loopCount); innerLoop++) {

if (xToRight)

xPos++;

else

xPos--;

matrix[xPos - 1][yPos - 1] = lastValue++;


}

xToRight = !xToRight;

}


for (int i = 0; i < size; i++) {

for (int j = 0; j < size; j++) {

System.out.printf("%3d", matrix[i][j]);

}

System.out.println();

}

System.out.println();


}


public static void main(String[] args) {


Snail s = new Snail();

s.run(5);


}


}



초기 1렬을 그대로 출력하고


x축 끝에서 만날시 방향 전환

y축 끝에서 만날시 방향 전환


대충 이런 느낌으로 작성하였습니다.



머리가 굳어가는 느낌에 가끔 기름칠.


  1 32 31 30 29 28 27 26 25

  2 33 56 55 54 53 52 51 24

  3 34 57 72 71 70 69 50 23

  4 35 58 73 80 79 68 49 22

  5 36 59 74 81 78 67 48 21

  6 37 60 75 76 77 66 47 20

  7 38 61 62 63 64 65 46 19

  8 39 40 41 42 43 44 45 18

  9 10 11 12 13 14 15 16 17


9에 대한 출력값...






+ Recent posts