본문 바로가기
코딩테스트 문제풀이(Python)

백준 2446번 문제풀이

by chanfficial 2022. 4. 17.

2446. 별 찍기 - 6

 

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

 

 

입력 : 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.출력 : 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

 

ex)입력 : 5

출력 :

*********
 *******
  *****
   ***
    *
   ***
  *****
 *******
*********

 

 

 

풀이

n = int(input())

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

- 출력 예제를 보면 * 의 개수는 9-7-5-3-1 순으로 감소했다가 다시 1-3-5-7-9 순으로 증가하며 홀수 개로만 출력되는 것을 알 수 있고 공백의 칸수는 0-1-2-3-4, 4-3-2-1-0 순으로 1씩 증가했다 감소하는 것을 알 수 있다.

공백의 칸수는 n-i 를 곱한 만큼 출력되며 * 의 개수는 2 * i - 1 를 곱한 만큼 출력되는 공식을 찾았고,

이때 * 한 개를 사이에 두고 대칭을 이루도록 출력해야 하기 때문에 for 문을 두 번 사용했다.

만약 n=5라면, 첫줄 부터 다섯째 줄까지는 n부터 1까지 1씩 감소하며 공백과 * 을 출력하고

여섯째 줄부터 아홉째 줄까지는 2부터 n+1씩 1만큼 증가하며 공백과 * 을 출력하게 된다.

'코딩테스트 문제풀이(Python)' 카테고리의 다른 글

백준 10995번 문제풀이  (0) 2022.04.18
백준 10991번 문제풀이  (0) 2022.04.18
백준 2445번 문제풀이  (0) 2022.04.17
백준 2523번 문제풀이  (0) 2022.04.17
백주 2522번 문제풀이  (0) 2022.04.17