2448번: 별 찍기 - 11
첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, ...) (0 ≤ k ≤ 10, k는 정수)
www.acmicpc.net
문제
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
입력
첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, ...) (0 ≤ k ≤ 10, k는 정수)
출력
첫째 줄부터 N번째 줄까지 별을 출력한다.
코드
n = int(input())
def triangle(n):
if n == 3:
return [" * ", " * * ", "*****"]
tmp = triangle(n//2)
res = []
for t in tmp:
res.append(' '*(n//2) + t + ' '*(n//2))
for t in tmp:
res.append(t + ' ' + t)
return res
print('\n'.join(triangle(n)))
백준 2447번 별 찍기 - 10과 동일한 방법으로 풀이하였다.
분할정복의 원리로 큰 문제를 작은 문제로 쪼개서 풀이하면 된다. 이 문제를 보면 가장 기본이 되는 모양이 반복되며 점점 큰 문양을 그리는 것을 알 수 있다.
'문제풀이 > 분할정복' 카테고리의 다른 글
[Python/파이썬] 백준 1030번 프렉탈 평면 (0) | 2023.08.06 |
---|---|
[Python/파이썬] 백준 4256번 트리 (0) | 2023.05.09 |
[Python/파이썬] 백준 2447번 별 찍기 - 10 (0) | 2023.05.07 |
[Python/파이썬] 백준 1074번 Z (0) | 2023.03.15 |
[Python/파이썬] 백준 1992번 쿼드트리 (0) | 2023.03.15 |