오보에블로그
2447_별찍기 - 10 본문
# 별찍기 - 10 성공
# 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
# 1 초 128 MB 2360 1171 876 50.057%
# 문제
# 예제를 보고 별찍는 규칙을 유추한 뒤에 별을 찍어 보세요.
# 입력
# 첫째 줄에 N이 주어진다. N은 항상 3의 제곱꼴인 수이다. (1, 3, 9, 27, ...) (N=3^k, 0<=k<8)
# 출력
# 첫째 줄부터 N번째 줄까지 별을 출력한다.
# 예제 입력
# 27
# 예제 출력
# ***************************
# * ** ** ** ** ** ** ** ** *
# ***************************
# *** ****** ****** ***
# * * * ** * * ** * * *
# *** ****** ****** ***
# ***************************
# * ** ** ** ** ** ** ** ** *
# ***************************
# ********* *********
# * ** ** * * ** ** *
# ********* *********
# *** *** *** ***
# * * * * * * * *
# *** *** *** ***
# ********* *********
# * ** ** * * ** ** *
# ********* *********
# ***************************
# * ** ** ** ** ** ** ** ** *
# ***************************
# *** ****** ****** ***
# * * * ** * * ** * * *
# *** ****** ****** ***
# ***************************
# * ** ** ** ** ** ** ** ** *
# ***************************
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | def star(i_strt,i_end,j_strt, j_end, star_list): for i in range(i_strt+ (i_end-i_strt)//3-1,i_strt + 2*(i_end-i_strt)//3): for j in range(j_strt + (j_end-j_strt)//3 - 1,j_strt + 2*(j_end-j_strt)//3): if(i_strt+ (i_end-i_strt)//3 - 1< i < i_strt + 2*(i_end-i_strt)//3 and j_strt + (j_end-j_strt)//3 - 1 < j < j_strt + 2*(j_end-j_strt)//3 ): star_list[i][j] = 1 if((i_end - i_strt > 3) or (j_end - j_strt > 3)): star_list = star(i_strt ,i_strt+ (i_end-i_strt)//3, j_strt, j_strt + (j_end-j_strt)//3,star_list) star_list = star(i_strt+ (i_end-i_strt)//3 ,i_strt+ 2*(i_end-i_strt)//3, j_strt, j_strt + (j_end-j_strt)//3,star_list) star_list = star(i_strt+ 2*(i_end-i_strt)//3 , i_end,j_strt, j_strt + (j_end-j_strt)//3, star_list) star_list = star(i_strt ,i_strt+ (i_end-i_strt)//3, j_strt + (j_end-j_strt)//3 , j_strt + 2*(j_end-j_strt)//3,star_list) star_list = star(i_strt+ 2*(i_end-i_strt)//3 ,i_end, j_strt + (j_end-j_strt)//3, j_strt + 2*(j_end-j_strt)//3,star_list) star_list = star(i_strt ,i_strt+ (i_end-i_strt)//3, j_strt + 2*(j_end-j_strt)//3, j_end,star_list) star_list = star(i_strt+ (i_end-i_strt)//3 ,i_strt+ 2*(i_end-i_strt)//3, j_strt + 2*(j_end-j_strt)//3, j_end,star_list) star_list = star(i_strt+ 2*(i_end-i_strt)//3 , i_end,j_strt + 2*(j_end-j_strt)//3,j_end,star_list) return star_list n = int(input()) matrix = [[0]*n for i in range(n)] matrix = star(0,n,0,n,matrix) for i in range(n): for j in range(n): if(matrix[i][j]==0): print("*",end = "") else: print(" ",end = "") print("") | cs |
예~~~~ 어려워 보여서 눈으로만 보고 있었던 문제를 드디어 풀었습니다~~!!
star(보려는 y좌표의 처음 자리, 보려는 y좌표의 마지막 자리, 보려는 x좌표의 처음 자리, 보려는 x좌표의 마지막 자리, 별자리리스트 ) 는 가운데에만 구멍( 1 처리) 을 뚫어 주고 재귀로 넘겨 버리는 함수 입니다~
'STEADYSTUDY > Etc' 카테고리의 다른 글
[Python3] 마우스 입력 좌표 확인 하기 (0) | 2020.05.25 |
---|---|
[Python3] 프로그램 축소기 (0) | 2019.07.08 |
자바실습 Week10 - FILE IO (0) | 2017.11.22 |
Collection & Generics (0) | 2017.11.16 |
추상클래스 (abstract class) 사용 (0) | 2017.11.08 |