(실버1) 2447 별찍기-10
- 나의 코드
def func(x, y) :
# 폭
dif = x[1]- x[0]
# 다음꺼 폭
dif_3 = dif//3
# 최소함수 : 폭이 3일 때 모양 넣기
if dif_3 == 1 :
for tmp_y in range(y[0],y[1]) :
for tmp_x in range(x[0], x[1]) :
result[tmp_y][tmp_x] = True
result[y[0]+1][x[0]+1] = False
return
# 9군데 중 색칠이 8군데라 8개
func((x[0],x[0]+dif_3), (y[0],y[0]+dif_3))
func((x[0]+dif_3,x[0]+dif_3*2), (y[0],y[0]+dif_3))
func((x[0]+dif_3*2,x[0]+dif_3*3), (y[0],y[0]+dif_3))
func((x[0],x[0]+dif_3), (y[0]+dif_3,y[0]+dif_3*2))
func((x[0]+dif_3*2,x[0]+dif_3*3), (y[0]+dif_3,y[0]+dif_3*2))
func((x[0],x[0]+dif_3), (y[0]+dif_3*2,y[0]+dif_3*3))
func((x[0]+dif_3,x[0]+dif_3*2), (y[0]+dif_3*2,y[0]+dif_3*3))
func((x[0]+dif_3*2,x[0]+dif_3*3), (y[0]+dif_3*2,y[0]+dif_3*3))
# N 입력받기
N = int(input())
# 전부 False인 N*N 수열 생성
result = [[False]*N for _ in range(N)]
# 재귀 돌리기
func((0,N),(0,N))
# 별 출력
for y in range(N) :
for x in range(N) :
if result[y][x] :
print("*", end="")
else :
print(" ", end="")
print("")
- 남의 코드
def stars(n):
# 결과물 초기화
m = []
# for 문 : n 길이의 3배 실행
for i in range(3 * len(n)):
# 중간 빈 곳 있는 가운데 줄
if i // len(n) == 1:
m.append(n[i % len(n)] + " " * len(n) + n[i % len(n)])
# 다른 줄
else:
m.append(n[i % len(n)] * 3)
return list(m)
# 패턴
star = ["***", "* *", "***"]
# 입력받기
N = int(input())
# 횟수 구하기
j = 0
while N != 3:
N = N // 3
j += 1
# j 번 패턴을 넣고 출력받음
for i in range(j):
star = stars(star)
# 패턴을 줄별로 출력
for i in star:
print(i)
Author And Source
이 문제에 관하여((실버1) 2447 별찍기-10), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@swhan9404/실버1-2447-별찍기-10저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)