[白俊]1913号-カタツムリ
9634 ワード
アイデア
問題でルールを見つけようとすると、箱を1つ増やすたびに移動の度合いが2倍になるルールがあります.
たとえば、N=3の場合、1を除いて、残りの値は2グリッド上、右、下、左、右に移動します.N=5であれば、N=3を満たす場合には、4格子を上へ移動する.この部分により,移動位置の配列と実際の移動の配列を解いた.
コード#コード#
問題でルールを見つけようとすると、箱を1つ増やすたびに移動の度合いが2倍になるルールがあります.
たとえば、N=3の場合、1を除いて、残りの値は2グリッド上、右、下、左、右に移動します.N=5であれば、N=3を満たす場合には、4格子を上へ移動する.この部分により,移動位置の配列と実際の移動の配列を解いた.
コード#コード#
N = int(input()) # NxN
M = int(input()) # M의 위치는?
array = [[0 for col in range(N)] for row in range(N)]
num = int((N-1)/2)
array[num][num] = 1
check1 = num
check2 = num
lst_move = [[-1,0],[1,0],[0,-1],[-1,0]]
lst = [[0,1],[1,0],[0,-1],[-1,0]]
tmp = 1
for i in range(1,num+1):
for j in range(4):
check1 += lst_move[j][0]
check2 += lst_move[j][1]
for k in range(i*2):
tmp += 1
array[check1+k*lst[j][0]][check2+k*lst[j][1]] = tmp
if k == (i*2-1):
check1 = check1+k*lst[j][0]
check2 = check2+k*lst[j][1]
for arr in array:
print(' '.join(str(a) for a in arr))
for i in range(N):
if M in array[i]:
print(i+1,array[i].index(M)+1)
exit()
Reference
この問題について([白俊]1913号-カタツムリ), 我々は、より多くの情報をここで見つけました https://velog.io/@yerimstar/백준-1913번-달팽이テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol