1. 문제
- 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개 찍기
2. 출제의도 파악하기
- 반복문 좀 쓸줄 아니?
3. 풀이
N = int(input())
for n in range(N):
print('*'*(n+1))
- 정수로 입력을 받는다. = N
- 정수만큼 반복한다.
- n에는 정수가 담긴다.
- *을 n+1한 만큼 출력한다.
+1 하는 이유
range(N)을 하게 되면 0번 부터 시작이다.
그러므로 첫번째 줄에 별 1개가 찍히려면 n+1은 1이 되어야 한다.
아래와 같이 할 수도 있다.
N = int(input())
for n in range(1, N+1):
print('*'*(n))
4. 남의 버전 분석
- 리스트 컴프리헨션을 활용해 찍을 수도 있다.
N = int(input())
[print("*" * (n+1)) for n in range(N)]
- 한줄로 할 수도 있다.
for i in range(int(input())):print('*'*-~i)
~는 비트 연산자 중 보수 연산자이다.
보수는 보충하는 수라는 의미이다.
솔직히 조금 어렵다.
(풀이 해설: https://www.acmicpc.net/board/view/40946)
~i == -i -1 이다.
따라서 -~i = -1 *(-i-1)
아래 코드를 실행하면
1부터 입력한 숫자까지 출력된다.
for i in range(int(input())):print(-~i)
5. 출력 확인
'백준' 카테고리의 다른 글
백준 10952 A+B 파이썬 (0) | 2022.12.05 |
---|---|
백준 10871 X보다 작은 수 파이썬 (0) | 2022.11.28 |
백준 2741 N찍기 파이썬 (0) | 2022.10.27 |
백준 15552 빠른 A + B 파이썬 (0) | 2022.02.17 |
백준 8393 합 파이썬 (0) | 2022.02.16 |