import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException, NoSuchElementException {
Scanner s = new Scanner(System.in);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = s.nextInt();
int find = s.nextInt();
int[][] arr = new int[n][n];
int a = n / 2, b = n / 2;
int level = 1;
int num = 1;
int x = 0, y = 0;
while (true) {
for (int i = 0; i < level; i++) {
arr[a][b] = num++;
a--;
}
if ((num - 1) == n * n) break;
for (int i = 0; i < level; i++) {
arr[a][b] = num++;
b++;
}
level++;
for (int i = 0; i < level; i++) {
arr[a][b] = num++;
a++;
}
for (int i = 0; i < level; i++) {
arr[a][b] = num++;
b--;
}
level++;
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
bw.write(arr[i][j] + " ");
if (find == arr[i][j]) {
x = i + 1;
y = j + 1;
}
}
bw.newLine();
}
bw.write(x + " " + y);
bw.flush();
}
}
n이 3일 때를 그리고 1부터 방향을 화살표로 표시해봤다. 같은 방향으로 한 번 = level 1, 두 번 = level 2 이렇게 해서 각 방향별로 level로 for문을 돌렸고 한 싸이클이 다 돌고나면 arr[0][0]까지 채운 후 while문에서 break했다.
처음에 시간 초과가 뜨길래 Scanner를 BufferedReader로, Println을 BufferedWriter로 다시 짰는데 자꾸 런타임 에러가 나서... 스캐너만 다시 그대로 돌려놓고 프린트만 버퍼로 했더니 맞았다고 뜬다.
... 처참한 내 제출 기록
저거 NoSuchElement 진짜 해결 못하겠다고 ㅠㅠ 왤까... 앞으로는 애초에 BufferedReader로 짠다
버퍼 입출력 공부하고 활용하자...