안경잡이 구루루

백준 2444 (별 찍기 -7 ) [Python/파이썬] 본문

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

백준 2444 (별 찍기 -7 ) [Python/파이썬]

구루루(gururu) 2023. 8. 30. 10:35
반응형

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

 

2444번: 별 찍기 - 7

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

www.acmicpc.net

 


나:

N = int(input())
for i in range(1,N+1):
  print(' '*(N-i)+ '*'*(2*i-1))
for j in range(N-1,1-1,-1):
  print(' '*(N-j)+ '*'*(2*j-1))

완성된 코드는 위와 같다,

우선 문제를 풀기 전 별 반복 횟수가 커졌다가 다시 작아지는 과정이라서 반복이 두번은 필요하다고 생각했다.

별의 개수는 첫째 줄에 입력받은 N에 따라 2N -1 의 규칙성으로 늘어나고 줄어드는  모습을 관찰 할 수 있다.

 

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

그래서 첫번 째 반복문은 별의 개수가 점점 늘어나는 과정을 구현했다. 

그리고 별의 개수가 제일 많은 상황까지 출력한다. 즉,  별의 개수가 최대일 때 까지 출력함.

이때 range()함수는 끝의 숫자를 포함하지 않기 때문에 +1 을 해주었다.

 

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

두번 째 반복문은 별의 개수가 점점 줄어드는 과정을 구현했다.

위에서 별의 개수가 최대일 때를 구현했으니 줄어드는 과정부터 반복하면 된다. 

이때 위와 달리 개수가 줄어들기 위해 range() 함수의 step 부분에 -1을 주고 끝의 숫자포함하지 않아 -1 해줌

 

반응형