백준

백준 2438 별 찍기 파이썬

하카데미 2022. 11. 18. 07:53

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://jays-log1111.tistory.com/entry/4-2-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%B9%84%ED%8A%B8%EC%97%B0%EC%82%B0%EC%9E%90-2%EC%9D%98-%EB%B3%B4%EC%88%98-%EA%B3%B5%EB%B6%80%ED%95%98%EA%B8%B0)

(풀이 해설: 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