새소식

반응형
Algotithms

[백준] 10994 별찍기 -19

  • -
728x90
반응형

문제

  • 예제를 보고 규칙을 유추한 뒤 별찍기
  • 1 <= N <= 100

 

 

풀이

  • 예제를 보니 사각형 박스를 한 겹씩 늘리는 형태다.
  • 사각형의 길이는 1 -> 5 -> 9 -> 13 -> .... 로 증가한다.
    => 4 * k + 1 의 형태를 따름을 알 수 있다.
  • 다음이 반복된다.
    '* ' x (이전 사각형의 개수) + '*' x 사각형 한 변 + ' *' x (이전 사각형의 개수)
    '* ' x (이전 사각형의 개수) + ' ' x 사각형 한 변 + ' *' x (이전 사각형의 개수)
  • 길이가 1일 때(가장 중앙에 있는)를 기준으로 대칭이다.

 

N = int(input())
prev = ''	# 앞
post = ''	# 뒤
buffer = []	# 지금까지 출력한 문자열 저장
for i in range(N-1, -1, -1) :
    buffer.append(prev + '*' * (4*i+1) + post)
    print(buffer[-1])
    prev += '* '
    post += ' *'
    if i > 0 :
        buffer.append(prev + ' ' * (4*(i-1)+1) + post)
        print(buffer[-1])

buffer.pop()
for i in range(len(buffer)) :
    print(buffer.pop())

 

References

  • 백준 구현
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.