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

백준 2442번 문제풀이

by chanfficial 2022. 4. 17.

2442. 별 찍기 - 5

 

첫째 줄에는 별 1개, 둘째 줄에는 별 3개, ..., N번째 줄에는 별 2×N-1개를 찍는 문제
별은 가운데를 기준으로 대칭이어야 한다.

 

 

 

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

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

 

ex)

입력 : 5

출력 :

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

 

 

 

풀이

n = int(input())

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

- 먼저 n을 입력받은 다음 i가 0이 되지 않게 하기 위해 for문의 범위를 1부터 n+1까지 1씩 증가하도록 따로 지정해주었다. 출력 예시를 보면 *을 출력하기 전의 공백이 4-3-2-1-0 으로 1씩 감소하는 것을 알 수 있는데, i=1 일때 *을 하나 출력하고 공백을 4칸 출력하므로 i+(n-i)=n 이라는 부분을 활용하여 공백을 n-i 만큼 출력하게 했다. 

또 *은 1-3-5-7-9 의 순서로 2i-1(홀수 규칙)만큼 증가하는 것을 보아 *에 2*i-1 을 곱하여 출력하게 했다.

 

 

주의할 점  

: 처음 문제를 풀 때 '*' * (2i-1) 로 작성했는데 invalid decimal literal 라는 오류가 발생했다.

분명 이게 맞는데 왜 오류가 났지? 하고 찾아보니 파이썬에서 변수를 선언할 때, 첫 글자에는 숫자를 사용할 수 없기 때문에 오류가 난것을 알게 되었다.

그래서 '*' * (2*i-1) 로 작성하여 오류를 해결했다.

2i-1 과 2*i-1 이 보기에는 같아 보이지만 파이썬에서는 후자만 가능하기 때문에 이를 조심하자

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

백준 2444번 문제풀이  (0) 2022.04.17
백준 2443번 문제풀이  (0) 2022.04.17
백준 9325번 문제풀이  (0) 2022.04.15
백준 10833번 문제풀이  (0) 2022.04.15
백준 10952번 문제풀이  (0) 2022.04.14