ํ’€์ด


๋‹ฌํŒฝ์ด ๋ชจ์–‘์œผ๋กœ 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)

References