[python] 백준 2444번

도덩이의 개발 일지·2024년 7월 31일

백준

목록 보기
48/131
post-thumbnail

안녕하세요 !

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


문제 설명


해결 방법

제가 문제를 해결한 방법은 다음과 같습니다.

  1. 숫자 N을 입력받고 2*N-1의 값을 구해줍니다.
  2. 공백과 별의 개수를 구하고 이를 연관지어 반복문을 수행하며 각 줄의 문자열을 리스트에 넣어준다.
  3. 리스트 안 문자열을 출력한다.

먼저 숫자 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)
profile
말하는 감자에서 개발자로 ( ´͈ ᵕ `͈ )◞♡

0개의 댓글