728x90
반응형
https://www.acmicpc.net/problem/10994
10994번: 별 찍기 - 19
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
www.acmicpc.net
풀이
이 문제를 보면서 재귀를 써야하는건 알겠는데 어떻게 써야하는지 감이 안와서 한참을 노트에 끄적였다.
그러다 규칙을 찾았다.
입력 값을 3으로 예를 들면 3일때는 시작점이 0,0이고 2가 되면 2,2, 1이 되면 4,4가 된다. 이와 같이 각 사각형의 왼쪽 위의 모서리 좌표가 숫자가 줄어듦에 따라 x,y가 2씩 증가하는 것을 알 수 있었다. 또한 각 변의 길이는 4씩 줄어들기 때문에 1+4*(n-1)이 된다. n이 1일 때 길이는 1이다.
그래서 재귀함수에서 a==1이면 해당 좌표에 *을 넣고 return해서 함수를 빠져나와주었다.
a가 1이 아니면 변의 길이에 맞게 사각형의 테두리에만 *을 넣어준다.
그 다음 해당 사각형안에 있는 사각형을 호출한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
n=int(input())
size=1+4*(n-1)
arr=[[' ']*(size) for i in range(size)]
def star(a,x,y):
if a==1:
arr[x][y]='*'
return
for i in range(a):
arr[x][i+x]='*' # 윗 변
arr[x+a-1][i+x]='*' # 아랫 변
arr[i+y][y]='*' # 왼쪽 변
arr[i+y][a+y-1]='*' # 오른쪽 변
star(a-4,x+2,y+2)
star(size,0,0)
for i in range(size):
print(''.join(i for i in arr[i]))
|
cs |
728x90
반응형
'Python3 > 백준 알고리즘' 카테고리의 다른 글
2022.02.22 [백준] (python 파이썬) 검증수 (0) | 2022.02.22 |
---|---|
2022.02.22 [백준] (python 파이썬) 음계 (0) | 2022.02.22 |
2022.02.22 [백준] (python 파이썬) 괄호의 값 (0) | 2022.02.22 |
2022.02.22 [백준] (python 파이썬) 하노이 탑 (0) | 2022.02.22 |
2022.02.22 [백준] (python 파이썬) 별 찍기 - 11 (0) | 2022.02.22 |
댓글