
안녕하세요 !
오늘은 백준 - 별 찍기 문제를 다뤄보도록 하겠습니다.

제가 문제를 해결한 방법은 다음과 같습니다.
- 숫자 N을 입력받고 2*N-1의 값을 구해줍니다.
- 공백과 별의 개수를 구하고 이를 연관지어 반복문을 수행하며 각 줄의 문자열을 리스트에 넣어준다.
- 리스트 안 문자열을 출력한다.
먼저 숫자 N을 입력받습니다.
num = int(input()) number = (2*num)-1
그 다음 공백과 별의 개수를 구하고 이를 연관지어 반복문을 수행하며 각 줄의 문자열을 리스트에 넣어줍니다.
저는 위, 중앙, 아래 부분으로 나눠서 구해줬습니다.
list = [] # 위 for i in range(1, number, 2): side = (2*num-1-i)//2 str = '' for x in range(side): str += ' ' for x in range(i): str += '*' list.append(str) # 중앙 str = '' for i in range(number): str += '*' list.append(str) # 아래 for i in range(number-2, 0, -2): side = (number - i)//2 str = '' for x in range(side): str += ' ' for x in range(i): str += '*' list.append(str)
마지막으로 리스트 안 문자열을 출력합니다.
for i in list: print(i)
저는 이 문제를 풀면서 출력 형식이 잘못되었다는 오류를 계속 받았습니다.
처음에 저는 *을 기준으로 왼쪽 오른쪽 공백을 둘 다 넣어줬는데 오른쪽 공백 때문에 오류가 발생했습니다.
이 오류가 발생했다면 왼쪽 공백만 넣어서 채점해보시길 바랍니다.
num = int(input())
number = (2*num)-1
list = []
for i in range(1, number, 2):
side = (2*num-1-i)//2
str = ''
for x in range(side):
str += ' '
for x in range(i):
str += '*'
list.append(str)
str = ''
for i in range(number):
str += '*'
list.append(str)
for i in range(number-2, 0, -2):
side = (number - i)//2
str = ''
for x in range(side):
str += ' '
for x in range(i):
str += '*'
list.append(str)
for i in list:
print(i)