BOJ 2438 - 별 찍기 - 1 (Python3)

2022. 11. 11. 00:44Bronze/Bronze V

Hello, World!를 출력하는 문제 외에도 프로그래밍 입문자들에게 국룰로 통하는 예제가 있다. 아니, 응용성을 따지면 이 별 찍기가 더 그러하지 않을까.

Hello, World!를 출력하는 것은 그저 print() 함수의 사용법을 익히는 예제에서 그치지만, 이 별 찍기 문제는 출력하는 별의 모양에 따라서 반복문을 통한 단순 구현 문제에서 심하면 재귀함수 작성 문제까지 발전이 가능하기 때문이다.

참고로 백준 온라인 저지에는 별 찍기 문제만 23개+한별찍기 하나가 있다. 모두 풀어낼 실력이 있다면 당신은 아마 나보다 훨씬 나은 프로그래머일 것이다.

 

그럼 본격적으로 풀이에 돌입해 보자.


문제

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

 

입력

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

 

예제 입력)

5

 

출력

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

 

예제 출력)

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

 


내 코드

n = int(input())
for i in range(n):
    print("*"*(i+1))

 

본래는 이것보다 더 숏코딩 형식에 부합하였으나, 가독성을 위해서 개행을 거쳤다.

 

이번 문제는 단순히 for 반복문을 사용할 수 있는지 여부를 묻는 것에 지나지 않는다.

우선 반복해야 할 횟수 n을 int(input())을 통하여 정수 형식으로 입력받고, range(n) 안에 있는 i를 대상으로 print("*"*(i+1))이라는 동작을 수행하면 끝이다.

여기서 range(n)이란 (아주 정확하게 동일하지는 않으나) [0, 1, 2, 3, ..., n-3, n-2, n-1]의 길이 n인 배열이라고 생각하면 편하겠다.

그 원소 i로 반복문을 돌렸을 테니 0부터 n-1까지 빠짐없이 한 번씩 동작하였을 테고.

 

i+1개의 별을 출력하는 것은 print("*"*(i+1))이 수행하게 된다.

다른 프로그래밍 언어라면 다시 여기서 반복문을 한 번 더 돌려주어야 하나, 파이썬의 장점이 무엇인가! 편의성이다!

파이썬의 아버지 귀도 반 로섬은 특정 문자열 str을 x번 나열하는 것을 str*x라는 아주 간단한 동작으로 수행 가능하게금 해 주었다!

그 은총을 받아 반복문 안에 집어넣으면, 별 찍기는 끝이다.

 

이로서 2438번의 풀이를 마친다.

 

그럼, 오늘도 당신의 코딩 실력이 상승하기를.

 

728x90

'Bronze > Bronze V' 카테고리의 다른 글

BOJ 8545 - Zadanie próbne (Python3)  (0) 2022.11.11
BOJ 1271 - 엄청난 부자 2 (Python3)  (0) 2022.11.11
BOJ 2557 - Hello World (Python3)  (0) 2022.11.10
BOJ 1008 - A/B (Python3)  (0) 2022.11.10
BOJ 1001 - A-B (Python3)  (0) 2022.11.10