문제 출처 : https://www.acmicpc.net/problem/1913
문제가 쉬워보여 가벼운 마음으로 접근했는데 생각보다 생각이 안 떠올라 결국 노가다...
한 변은 N개의 요소들로 이루어져있다. 이를 바람개비처럼 생각해보면 껍질 하나의 총 요소의 개수는 4*(N-1)개이다. 이를 매 껍질마다 N-1번씩 연산
import sys
N = int(sys.stdin.readline().rstrip("\n"))
target= int(sys.stdin.readline().rstrip("\n"))
snail=[[0 for n in range(N)] for _ in range(N)]
start = N**2
result=[]
def snail_fuc(n ,c, s) :
if n==1 :
snail[N//2][N//2]=1
return
for i in range(n-1) : #N=7
snail[i+c][c] = s
if target==s:
result.extend([i+c+1,c+1])
snail[N-1-c][i+c] = s-(n-1)
if target==s-(n-1):
result.extend([N-c,i+c+1])
snail[N-1-c-i][N-1-c] = s-(n-1)*2
if target==s-(n-1)*2:
result.extend([N-c-i,N-c])
snail[c][N-1-c-i] = s-(n-1)*3
if target==s-(n-1)*3:
result.extend([c+1,N-c-i])
s-=1
s=(n-2)**2
snail_fuc(n-2,c+1,s)
snail_fuc(N,0,start)
for n in range(N):
for m in snail[n] :
print(m,end=" ")
print()
for i in result :
print(i,end=" ")
출처:https://egg-money.tistory.com/85
움직임(VECTOR)을 표현하는 좌표를 list로 만들어 수학적 식, 규칙과 적절히 이용.