
package test;
import java.io.IOException;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int test= sc.nextInt();
for (int k = 0; k < test; k++) {
int a = sc.nextInt();
int x = 0;
int y = -1;
int output = 1;
int m = 1;
int[][] array = new int[a][a];
while (output <= a * a) {
// x는 그대로 y가 증가
for (int i = y + m; i < a; i++) {
y++;
array[x][y] = output;
output++;
}
// y는 그대로 x가 증가
for (int i = x + m; i < a; i++) {
x++;
array[x][y] = output;
output++;
}
// x는 그대로 y가 감소
for (int i = y - m; i >= 0; i--) { // m이 -1이 될예정
y--;
array[x][y] = output;
output++;
}
// y는 그대로 x가 감소
for (int i = x - m; i > 0; i--) {
x--;
array[x][y] = output;
output++;
}
m++;
}
System.out.println("#"+(k+1));
for (int i = 0; i < a; i++) {
for (int j = 0; j < a; j++) {
System.out.print(array[i][j] + " ");
}
System.out.println();
}
}
}
}
규칙을 생각했을때
4x4 일때 값이
0-0
0-1
0-2
0-3
1-3
2-3
3-3
3-2
3-1
3-0
2-0
1-0
1-1
1-2
2-2
2-1
이렇게 진행된다
x-y 일때
x값은 그대로 y값이 증가 4번
x값이 증가 y값은 그대로 3번
x값은 그대로 y값이 감소 3번
x값이 감소 y값은 그대로 2번
x값은 그대로 y값이 증가 2번
x값이 증가 y값은 그대로 1번
x값은 그대로 y값이 감소 1번
4번을 기준으로 반복이 되고
횟수 또안 반복된다.
이를 기준으로 규칙을 찾았고 알고리즘을 만들었다.
'알고리즘(종합) > Lv.2' 카테고리의 다른 글
프로그래머스 - 귤 고르기 (0) | 2023.02.15 |
---|---|
2001 - 파리퇴치 (0) | 2022.11.14 |
1204 - 최빈수 구하기 (0) | 2022.11.14 |
1926 - 간단한 369 게임 (0) | 2022.11.13 |
1859 - 백만 장자 프로젝트 (0) | 2022.11.11 |