2444: 별 찍기 - 7 - Python

beaver.zip·2023년 11월 26일
0

baekjoon

목록 보기
40/56

https://www.acmicpc.net/problem/2444

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

예제 입출력


풀이 1 (정답)

n = int(input())

for i in range(1, n):
	print(' ' * (n-i), '*' * (2*i-1), sep='')
print('*' * (2*n-1))
for i in range(n-1, 0, -1):
	print(' ' * (n-i), '*' * (2*i-1), sep='')

조금 헷갈려서 종이에 그려서 풀었다.
입출력 예제인 n=5일 때의 경우를 표로 그려보았다.
대칭 관계를 이용해 풀고자 했고, 이에 for문을 뒤집어 사용했다.

풀이 2 (정답)

n = int(input())
def star(): print(' ' * (n-i) + '*' * (2*i-1))
for i in range(1, n): star()
for i in range(n, 0, -1): star()

풀이 1의 코드를 손 봤다.
코드 중복을 피하기 위해 star() 함수를 정의하였다. 굳이 정의했나 싶긴 하다.
또한 index를 보다 간단히 조정하였고, sep 파라미터 대신 + 연산자를 사용했다.

오늘의 교훈

  • for문을 거꾸로 사용하려면 range(start, end, step)를 사용한다.
# e.g.
for i in range (5, 0, -1) # i = 5, 4, 3, 2, 1
profile
mv blog velog.io/@beaver_zip

0개의 댓글