안경잡이 구루루

백준 2446 ( 별 찍기 - 9 ) [ Python ] 본문

파이썬(Python)/문제풀이(백준,BaekJoon)

백준 2446 ( 별 찍기 - 9 ) [ Python ]

구루루(gururu) 2020. 6. 2. 13:53
반응형


나:

N = int(input()) 
1 <= N <= 100


for i in range(N-1):
    print(' '*i+ '*'*((N+(N-1))-2*i))
for i in range(N):
    print(' '*(N-1-i) + '*'*((N-(N-1))+2*i))

완성된 코드는 위와 같다.

 

N = int(input()) 
1 <= N <= 100

2 * N-1 번 반복할 N의 값을 int형으로 받고 그것의 범위를 선언한다.

 

for i in range(N-1):
    print(' '*i+ '*'*((N+(N-1))-2*i))

위 문제는 크게 별(*)이 2개씩 감소하며 빈칸이 1개씩 늘어나는 부분과 그 반대 부분 2가지로 나눠서 풀 수 있다.

위 코드는 별이 감소하며 빈칸이 늘어나는 부분으로 for 반복문을 이용했다.

빈칸의 개수i의 값과 일치하고 별(*)의 개수최대출력 (N+N-1)에서 증가하는 빈칸값 (2 * i ) 만큼 빼면 된다.

 

for i in range(N):
    print(' '*(N-1-i) + '*'*((N-(N-1))+2*i))

위 코드는 별이 증가하며 빈칸이 늘어나느 부분으로 for 반복문을 사용한다. 

그러나 이전 반복문에서 1개까지 별을 출력했기 때문에 여기선 3개부터 별의 출력을 2개씩 증가시켜야 한다.

빈칸의 개수최대 개수 N-1에서 i만큼 감소한 것과 같고 별의 출력최소개수 N-N-1에서 2*i만큼 증가시키도록 더하면 된다.

반응형