[백준/파이썬] 2448번 별 찍기 - 11 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 2448번 별 찍기 - 11
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
높이 N의 삼각형 별 패턴을 출력하는 문제입니다.
작은 삼각형 3개(왼쪽, 오른쪽, 위쪽)를 재귀적으로 배치하는 구조입니다.
코드
n = int(input())
m = 2*n-1
triangle = [[' ']*(m) for _ in range(n)]
for i in range(n):
for j in range(n-1-i, n+i):
triangle[i][j] = ' '
def draw_space(cnt, end, row, col, pos):
if row == 0:
triangle[row][col] = \
triangle[row+1][col-1] = triangle[row+1][col+1] = \
triangle[row+2][col-2] = triangle[row+2][col-2] = \
triangle[row+2][col-1] = triangle[row+2][col-0] = \
triangle[row+2][col+1] = triangle[row+2][col+2] = '*'
else:
if pos != "mid":
for i in range(row, row+cnt):
for j in range(col-i+row, col+i-row+1):
triangle[i][j] = triangle[i-cnt][j + (cnt if pos=="left" else -cnt)]
if pos != "mid" or cnt * 2 > end:
return
draw_space(cnt, end, cnt, col-cnt, "left")
draw_space(cnt, end, cnt, col+cnt, "right")
draw_space(cnt*2, end, cnt*2, col, "mid")
draw_space(3, n, 0, m//2, "mid")
result = ''
for i in range(len(triangle)):
result += ''.join(map(str,triangle[i])) + '\n'
print(result)
설명
기본 크기(3) 삼각형을 만든 뒤
이 삼각형을 좌/우로 복사하고, 이를 다시 확장하는 식으로
전체 패턴을 구성합니다.
댓글남기기