[Baekjoon] #10994 - 별 찍기 - 19PS/백준2022. 2. 19. 21:08
Table of Contents
728x90
⭐️ 반복되는 사각형의 좌표값의 규칙을 찾아낸다.
⭐️ 재귀함수를 이용하면 코드가 깔끔해진다.
n = 3을 기준으로 규칙을 찾아보자
최외각 사각형의 가장 왼쪽 별의 좌표값은 (0, 0)이고 그 안의 두번째 사각형의 좌표값은 (2, 2) 세번째 별 하나의 좌표값은 (4, 4)인것을 알 수 있다.
사각형 모양대로 별을 찍을 때는 사각형의 내부에는 별이 찍혀있지 않으므로 위, 아래, 좌, 우에만 별이 찍히도록 한다.
l = 4 * n - 3
for i in range(idx, l + idx):
# 위 아래
starMap[idx][i] = '*'
starMap[idx + l - 1][i] = '*'
# 양 옆
starMap[i][idx] = '*'
starMap[i][idx + l - 1] = '*'
별을 찍는 부분의 구현이 꽤 까다롭다. 하나의 반복문에서 별을 찍기위해 다음과 같은 방법이 효율적인 것 같다.
def draw(n, idx):
if n == 1:
starMap[idx][idx] = '*'
return
l = 4 * n - 3
for i in range(idx, l + idx):
# 위 아래
starMap[idx][i] = '*'
starMap[idx + l - 1][i] = '*'
# 양 옆
starMap[i][idx] = '*'
starMap[i][idx + l - 1] = '*'
return draw(n - 1, idx + 2)
n = int(input())
max_box = 4 * n - 3
starMap = [[' '] * max_box for _ in range(max_box)]
draw(n, 0)
for i in range(max_box):
for j in range(max_box):
print(starMap[i][j], end="")
print()
728x90
'PS > 백준' 카테고리의 다른 글
[Beakjoon] #9465 - 스티커 (0) | 2022.08.01 |
---|---|
[Beakjoon] #17626 - Four Squares (0) | 2022.02.20 |
[Beakjoon] #14916 - 거스름돈 (0) | 2022.02.17 |
[Baekjoon] #1966 - 프린터 큐 (0) | 2022.02.14 |
[Baekjoon] #9095 - 1, 2, 3 더하기 (0) | 2022.02.11 |
@TTOII :: 뭉게뭉게 클라우드
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!