본문 바로가기

programming/algorithm

[algorithm] 백준 2447 - 별 찍기 10

[algorithm] 백준 2447 - 별 찍기 10

 

안녕하세요. 심심한 코딩쟁이입니다.

 

오늘은 백준 2447번 문제 - 별 찍기 10 의 풀이를 살펴보도록 하겠습니다.

 

풀이에 사용한 언어는 Python3 입니다.

 

문제 해석과 풀이 다 함께 살펴보시죠.

 

algorithm
알고리즘


백준 BAEKJOON 2447

 

백준 2447번 별 찍기 10 문제 보러가기

 

문제 해석

 

이번 문제에서는 재귀함수를 사용해서 별 찍기를 진행해야합니다.

공백이 나타날 곳만 조금 신경써주면 쉽게 찍어낼 수 있습니다.

***
* *
***

n 이 3일 때는 위 모양이 출력되고

9일 때는 위 모양을 한 개의 별로 보고 똑같은 패턴으로 출력하면 정답이 출력됩니다.

방금 말한 한 개의 별로 본다는 말이 문제를 풀 때 큰 실마리가 될 힌트입니다.

 

풀이

 

# 2447 별 찍기 10

n = int(input())

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

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

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

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

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

    return stars

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

 

풀이 해석 및 팁

 

star 함수를 살펴보면 stars 리스트에 별 모양을 계속 append 시켜주는 과정이 존재합니다.

여기서 i*3 이 문제 해석에서 힌트로 말씀드린 부분입니다.

재귀함수를 사용해서 패턴은 유지하면서 크기를 키워주는 방법으로 문제를 해결했습니다.

여기까지 백준 2447번 별 찍기 10 문제 풀이였습니다.


이번 문제의 정답률은 54% 정도입니다.

 

재귀함수를 이용해서 패턴을 유지시키는 동시에 크기를 키우는 별 찍기 문제였습니다.

 

궁금하신 점은 댓글로 남겨주시기 바랍니다.

 

감사합니다.

반응형