본문 바로가기

자료구조 & 알고리즘 & cs/CodingTest

[python] 2447 - 별 찍기

2447번: 별 찍기 - 10 (acmicpc.net)

 

2447번: 별 찍기 - 10

재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이

www.acmicpc.net

 

별이라던가 도형찍는 문제는 아주 초반부터 자주 접했는데..

다른 방식으로 나올 때마다 헷갈려 죽겠다.

언제쯤 익숙해질지 모르겠다.

이번에는 재귀를 사용해서 풀어야 하는 문제인데

접근법을 아예 찾지 못해 한참을 해매다가

결국 다른 분의 풀이 방법을 참고하였다

ㅠㅠ

 

* 참고 블로그 : [백준] 2447 - 별 찍기 - 10 [Python(파이썬)] — TaxFree (tistory.com)

 

[백준] 2447 - 별 찍기 - 10 [Python(파이썬)]

문제 www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에

cotak.tistory.com

 

n = int(input())

def star(l):
    if l == 3:
        return ['***','* *','***']

    arr = star(l//3)
    stars = []

    for i in arr:
        stars.append(i*3)

    for i in arr:
        stars.append(i+' '*(l//3)+i)

    for i in arr:
        stars.append(i*3)

    return stars

print('\n'.join(star(n)))

 

길이가 3일 때의 모양을 제일 기본으로 하고 주어지는 n의 값으로 부터 3으로 나누며

재귀함수를 실행시켜주는 것이다.

처음에 이해가 가지 않아서 몇 번 손으로 그려봐야 했다.

시간이 지난 뒤에 다시 풀어보면 좋을 듯 하다.

728x90