https://www.acmicpc.net/problem/2444
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
첫째 줄부터 2×N-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문을 뒤집어 사용했다.
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 파라미터 대신 + 연산자를 사용했다.
# e.g.
for i in range (5, 0, -1) # i = 5, 4, 3, 2, 1