본문 바로가기
코딩테스트/백준 알고리즘

백준 알고리즘 | 2446 : 별 찍기 - 9 (Python / 파이썬)

by 함께 공부해요 2021. 1. 2.


별 찍기 - 9 성공분류

시간 제한

메모리 제한

제출

정답

맞은 사람

정답 비율

1 초

128 MB

31039

17408

16064

57.310%

https://www.acmicpc.net/problem/2446

 

2446번: 별 찍기 - 9

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

www.acmicpc.net


문제

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

입력

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

출력

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

알고리즘 분류

구현


 

백준 알고리즘 # 2446번 : 별 찍기 - 9

n = int(input())

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

for j in range(1, n):
    print(" " * (n - j - 1) + "*" * ((2 * j) + 1))

풀이

오랜만에 별 찍기 구현 문제를 풀어봤어요🤣

처음에 예제 출력을 보고 뒤에 있는 " " 빈 칸 까지 신경써야하는 줄 알고 어려워했는데요.

간단하게 별표를 줄여나가면서 앞에 " " 빈 칸을 하나씩 늘려가면 되는 문제입니다.

먼저 예제 출력의 규칙성을 보면

별표가 9개 > 7개 > 5개 > 3개 > 1개 > 3개 > 5개 > 7개 > 9개로 홀수로 줄었다가

홀수로 늘어나는 모습을 볼 수 있어요👊🏻

그리고 그 사이에 " " 빈칸이 1 2 3 4 3 2 1로 늘었다가 줄어드는 모습을 볼 수 있죠.

때문에 for 반복문을 반으로 나눠서 출력을 해줬습니다.

key point

i 인자와 j 인자를 쓰는 2개의 for문으로 나눠주기.

i 인자를 쓰는 첫 for문에서는 1부터 n + 1인 6까지 즉, 1~5까지 i를 입력받고

" " 를 0~4 출력해주고 "*"를 (2 x 4~1) 한 값에서 1을 더해서 9, 7, 5, 3, 1로 출력해줍니다.

다음으로 j 인자를 쓰는 두 번쨰 for문에서는 1부터 n인 5까지 즉, 1~4까지 j를 입력받고

" " 를 3~0 출력해주고 "*"를 (2 x 1~4)한 값에서 1을 더해서 3, 5, 7, 9를 출력해주면 문제풀이 끄--읏!👏🏻

세한 코드가 궁금하신 분들은 아래 GitHub 코드를 참고해주세요🙏🏻

 

wook2124/Algorithm-Test

Practice algorithm. Contribute to wook2124/Algorithm-Test development by creating an account on GitHub.

github.com

최종 소스코드

댓글