# 무지성 재귀
def make(s, N, K):
# global BLANK
if s == 1:
pad = '0' * N
center = ('0'*BLANK) + ('1'*K) + ('0'*BLANK)
return [pad]*BLANK + [center] * K + [pad]*BLANK
mini = make(s-1, N, K)
pad = []
for r in mini:
pad.append(r*N)
center = []
for r in mini:
# print(r)
center.append(r*BLANK + '1'*K*(N**(s-1)) + r*BLANK)
# print(center[0])
return pad*BLANK + center * K + pad*BLANK
s, N, K, R1, R2, C1, C2 = map(int, input().split())
BLANK = ((N-K)//2)
# make(s, N, K)
arr = make(s, N, K)
for i in range(R1, R2+1):
print(arr[i][C1:C2+1])
무지성으로 재귀돌렸더니 메모리 초과가 나왔다.
패턴을 이해하면 풀 수 있을 것으로 보인다.