반응형
문제
재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 하나씩 있는 패턴이다. N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N/3)×(N/3) 정사각형을 크기 N/3의 패턴으로 둘러싼 형태이다. 예를 들어 크기 27의 패턴은 예제 출력 1과 같다. |
입력
첫째 줄에 N이 주어진다. N은 3의 거듭제곱이다. 즉 어떤 정수 k에 대해 N=3^k이며, 이때 1 ≤ k < 8이다. |
출력
첫째 줄부터 N번째 줄까지 별을 출력한다. |
예제
27을 넣어서 진짜 27줄이 출력됨을 확인할 수 있다.
3의 3승이므로 가로 3칸, 세로3칸이 만들어지고 가운데칸일 때마다 크게 구멍(?)이 나는 걸 확인할 수 있다.
순서를 따지면 1,4,7 일 때 구멍이 뚫려있다.
27보다 더 큰 숫자가 나올 때 1,4,7,10,13 이런 식으로 3씩 증가한 자리가 빈칸임을 알 수 있다.
이의 공통점을 살펴보자.
각각 3으로 나눴을 때 나머지가 1임을 알 수 있다.
import sys
num = int(input())
def star(x, y):
while(x != 0):
if(x % 3 == 1 and y % 3 == 1):
sys.stdout.write(' ')
return None
x = x // 3 #몫
y = y // 3
sys.stdout.write('*')
for x in range(num):
for y in range(num):
star(x, y)
sys.stdout.write('\n')
몫이 0이 되기 전까지 계산한다.
좌표를 생각하면 된다.
x,y좌표를 모두 3으로 나눴을 때 나머지가 1이면 빈칸.
아니면 '*'별을 찍어준다.
반응형
'백준' 카테고리의 다른 글
[백준]N과 M(2) 15650번 파이썬 (0) | 2020.11.03 |
---|---|
[백준알고리즘] 15652번 N과M(4) 파이썬 (0) | 2020.10.06 |
[백준알고리즘] 2740번 행렬곱셈 파이썬 (0) | 2020.09.29 |
[백준알고리즘] 11651번 좌표정렬하기2 파이썬 python (0) | 2020.09.29 |
[백준알고리즘] 3009번 네번째점 파이썬 (0) | 2020.09.29 |