반응형
https://www.acmicpc.net/problem/2447
생각보다 어렵다...
연습이 필요하다.. 이런 건 쉽게 풀어야 한다.
n = int(input())
table = [['*' for _ in range(n)] for _ in range(n)]
def draw(num, x, y):
next = num//3
if num<3:
return
for i in range(num):
for j in range(num):
if i//next == 1 and j//next == 1:
table[i+x][j+y] = ' '
elif i%next==0 and j%next == 0:
draw(next, x+ i, y+ j)
draw(n, 0, 0)
for i in range(n):
print(''.join(table[i]))
개선 코드 - 런타임을 4배정도 단축시켰다.
n = int(input())
table = [[' ' for _ in range(n)] for _ in range(n)]
def draw(num, x, y):
if num == 3:
table[x][y:y + 3] = ['*', '*', '*']
table[x+1][y:y + 3] = ['*', ' ', '*']
table[x+2][y:y + 3] = ['*', '*', '*']
return
next = num//3
for i in range(3):
for j in range(3):
if i == 1 and j == 1:
continue
else:
draw(next, x + next*i, y + next*j)
draw(n, 0, 0)
for i in range(n):
print(''.join(table[i]))
댓글