첫째 줄에 홀수인 자연수 N(3 ≤ N ≤ 999)이 주어진다. 둘째 줄에는 위치를 찾고자 하는 N2 이하의 자연수가 하나 주어진다.
N개의 줄에 걸쳐 표를 출력한다. 각 줄에 N개의 자연수를 한 칸씩 띄어서 출력하면 되며, 자릿수를 맞출 필요가 없다. N+1번째 줄에는 입력받은 자연수의 좌표를 나타내는 두 정수를 한 칸 띄어서 출력한다.
- 위치값을 저장할 배열에 오른쪽, 아래쪽, 왼쪽, 위쪽 순서 담음
- num = 1 # 해당 위치에 들어갈 숫자 1씩 증가 예정
- len = 0 # 특정 방향으로 이동할 길이 얼마나 더할 것인가. for 문으로 동일 작업 수행 가능.
- for 문과 위치값 이용해 특정 방향으로 한칸씩 이동하며 숫자 입력
- 찾을 번호의 인덱스 저장
import sys
input = sys.stdin.readline
n = int(input())
m = int(input())
board = [[0 for _ in range(n)] for _ in range(n)]
dr = [0, 1, 0, -1] # 오른쪽, 아래쪽, 왼쪽, 위쪽 순서
dc = [1, 0, -1, 0]
r = n//2 # 시작 row
c = n//2 # 시작 column
num = 1 # 해당 위치에 들어갈 숫자 1씩 증가 예정
len = 0 # 특정 방향으로 이동할 길이 얼마나 더할 것인가. for 문으로 동일 작업 수행 가능.
board[r][c] = num
while True:
for i in range(4):
for _ in range(len): # 특정 방향으로 한칸씩 이동하며 숫자 입력
r+=dr[i]
c+=dc[i]
num+=1
board[r][c]=num
if num==m: # 찾을 번호의 인덱스 저장
ans = [r+1, c+1]
if r==c==0:
break
r -= 1
c -= 1
len += 2
for i in range(n):
print(*board[i])
print(*ans)