문제
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 차례대로 별을 출력한다.
풀이 과정
재귀 태그가 달려있긴 하지만, 토네이도 만들기를 구현해도 AC를 받는다!
import sys
input = sys.stdin.readline
n = int(input().rstrip()) * 4 - 3
if n == 1: print('*')
else:
arr = [['*' for _ in range(n)] for _ in range(n+2)]
now = [1, n - 1]
row = [0, 1, 0, -1]
col = [-1, 0, 1, 0]
dir = 0
cnt = 0
while True:
arr[now[0]][now[1]] = ' '
if (dir == 0 and (now[1] == 1 or arr[now[0]][now[1] - 2] == ' ')) or (dir == 1 and (now[0] == n or arr[now[0] + 2][now[1]] == ' ')) or (dir == 2 and (now[1] == n - 2 or arr[now[0]][now[1] + 2] == ' ')) or (dir == 3 and arr[now[0] - 2][now[1]] == ' '):
dir = (dir + 1) % 4
cnt += 1
else:
cnt = 0
now[0] += row[dir]
now[1] += col[dir]
if cnt == 5: break
for i in range(n+2):
if i == 1: print('*')
else:
for j in range(n):
print(arr[i][j], end='')
print()
'-- 예전 기록 > BOJ' 카테고리의 다른 글
[ BOJ ] 1038 : 감소하는 수 ( GOLD 5 ) / Python (0) | 2024.01.30 |
---|---|
[ BOJ ] 6603 : 로또 ( SILVER 2 ) / Python (1) | 2024.01.29 |
[ BOJ ] 17087 : 숨바꼭질 6 ( SILVER 2 ) / Python (0) | 2024.01.29 |
[ BOJ ] 20207 : 달력 ( GOLD 5 ) / Python (0) | 2024.01.29 |
[ BOJ ] 13023 : ABCDE ( GOLD 5 ) / Python (0) | 2024.01.29 |