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 |