ํ์ด
๋ฌํฝ์ด ๋ชจ์์ผ๋ก N**2 ๋ถํฐ 1 ๊น์ง ์๋ฅผ ํ์ ๋ง๊ฒ ์ถ๋ ฅํ๋ ๋ฌธ์ ์ด๋ค.
์ด๋ฒ์๋ ์ญ์ ๋ฌธ์ ๋ฅผ ๊ผผ๊ผผํ ์ฝ์ง ๋ชปํด์ ์๋์น์๊ฒ ์ง์์ฉ ํ์ด๊น์ง ๋ง๋ค์ด๋ฒ๋ ธ๋ค.
ํ์ง๋ง ๋ฌธ์ ์์๋ ํ์์ฉ๋ง ์๊ตฌํ์์ผ๋ ํ์์ฉ ์์ฃผ๋ก ํ์ด๋ฅผ ์ค๋ช ํ๊ฒ ๋ค.
ํ์ํ ํ๋ ํญ์ 0, 0 ์ง์ ์์ N**2 ์ ์ซ์๊ฐ ์์ํ๊ธฐ ๋๋ฌธ์ ์ฒซ ์ขํ๋ฅผ 0, 0 ์ผ๋ก ์ง์ ํด์ค๋ค.
์ดํ ๋ฒฝ์ ๋ฐ๋ผ์ ์ซ์๊ฐ ์ฝ์ ๋๊ธฐ ๋๋ฌธ์ dx, dy ๋ฅผ [ํ, ์ฐ, ์, ์ข] ์์ผ๋ก ๋ง๋ค์ด์ค๋ค.
์ซ์๊ฐ ์ฝ์ ๋ ๊ฒฝ์ฐ๋ง๋ค ํจํด์ด ์๋๋ฐ N ์ด 5 ์ธ ๊ฒฝ์ฐ๋ฅผ ์๋ก ๋ค์ด๋ณด๊ฒ ๋ค.
[ํ, ์ฐ, ์, ์ข] ์์ผ๋ก ์ซ์๊ฐ ์ฝ์ ๋ ๋๋ง๋ค ์์๋๋ก 4๋ฒ์ฉ ์ซ์๋ฅผ ์ ๋ ฅํ ๋ค ๋ฐฉํฅ์ ์ ํํ๋ ํ์์ด๋ค.
๋ฐ๋ผ์ 25 ๋ถํฐ 10 ๊น์ง 4๋ฒ์ฉ ๋ฐฉํฅ์ ๋ฐ๊ฟ๊ฐ๋ฉฐ ์ซ์๊ฐ ์ ๋ ฅ๋๊ณ ,
์ดํ N ์ด 3 ์ผ๋ ์ขํ๋ 1, 1 ๋ก ๋ฐ๋๊ณ ๋๊ฐ์ ํจํด์ ๊ทธ๋๋ก ์ ์ฉ์ํจ๋ค.
๋ชจ๋ ํ์์ ๋ํด์ ์ ๋ฐ๋ณต์ด ์๋ฃ๋๋ฉด ๋ง์ง๋ง์ผ๋ก ์ค์์ ์์นํ๋ 1 ์ ์ ๋ ฅํ๋ฉด๋๋ค.
์์ ์ค๋ช ํ ๋ฐ๋ณต๋ฌธ์ N**2 ๋ถํฐ ์์๋๋ก ์ซ์๊ฐ ๋ด๋ ค๊ฐ๋ฉฐ ํ์ ์ ๋ ฅ๋๊ธฐ ๋๋ฌธ์ ์์น๋ฅผ ์ฐพ๊ณ ์ ํ๋ ์์ฐ์์ ์ฐจ๋ก๊ฐ ์ฌ ๊ฒฝ์ฐ ๊ทธ ์์ฐ์๊ฐ ์ ๋ ฅ๋ ์ขํ๋ฅผ ์ ์ฅํ์ฌ ์ถํ ์ ๋ต๊ณผ ํจ๊ป ์ถ๋ ฅํ๋ฉด๋๋ค.
์์ค์ฝ๋
import sys
input = sys.stdin.readline
n = int(input())
num = int(input())
snail = [[0]*n for _ in range(n)]
sx, sy = 0, 0
# when n == odd
def odd_snail(n, num):
global sx, sy
dx = [1, 0, -1, 0]
dy = [0, 1, 0, -1]
snail[n//2][n//2] = 1
d = n-1
a, b = n**2, (n**2)-d
for s in range(n//2):
x = s
y = s
for r in range(4):
for i in range(a, b, -1):
if i == num:
sx, sy = x, y
snail[x][y] = i
nx = x + dx[r]
ny = y + dy[r]
x, y = nx, ny
a = b
b = b - d
b += 2
d -= 2
# when n == even
def even_snail(n, num):
global sx, sy
dx = [-1, 0, 1, 0]
dy = [0, -1, 0, 1]
d = n-1
a, b = n**2, (n**2)-d
for s in range(n-1, (n-1)//2, -1):
x = s
y = s
for r in range(4):
for i in range(a, b, -1):
if i == num:
sx, sy = x, y
snail[x][y] = i
nx = x + dx[r]
ny = y + dy[r]
x, y = nx, ny
a = b
b = b - d
b += 2
d -= 2
if n%2 == 1:
odd_snail(n, num)
if num == 1:
sx, sy = n//2, n//2
else:
even_snail(n, num)
for s in snail:
print(*s)
print(sx+1, sy+1)