티스토리 뷰

 

[Python] 백준 알고리즘 온라인 저지 2438번 : 별 찍기 - 1

 

Python3 코드

 

1) for문 코드

n = int(input())

for i in range(1, n+1):  # 1부터 n까지
    print('*' * i)

 

2) comprehension 코드

[print('*' * i) for i in range(1, int(input())+1)]

 

 

Python3 코드 풀이

 

1. 코드 작성에 대한 전체적인 풀이

이 문제는 랜덤으로 어떤 수 n을 입력받으면 1부터 n까지 하나씩 개수를 늘려가면서 * 기호를 그리는 문제이다. 백준 단계별 문제에서 for문을 이용해서 숫자를 1부터 n까지 한 줄에 하나씩 출력하는 문제가 있었는데 그와 아주 유사하게 문제를 풀 수 있다. 숫자 대신 * 기호를 출력하면 된다.

 

이 문제도 for 반복문을 이용해서 코드를 작성할 수 있고 길이가 길지 않은 for문이기 때문에 comprehension 표현식을 이용해서 한 줄로 간단히 표현해보았다.

 

2. 수 입력받기

n = int(input())

이번 문제는 한 개의 수만 입력받는다. input 함수로 입력받으면 문자열로 입력받기 때문에 int 함수를 이용해 정수 타입으로 변환한 후 변수 n에 선언한다.

 

3. for문 코드를 작성

for i in range(1, n+1):  # 1부터 n까지

우선 range 함수를 이용해서 1부터 n까지의 숫자 범위를 먼저 생성한다. 왜냐하면 * 기호를 1부터 하나씩 개수를 늘려가며 그리는데 이 늘어나는 개수가 1부터 n까지 연속적인 정수의 나열이기 때문이다. range 함수를 사용할 때 괄호에 (시작 숫자, 종료 숫자)를 입력하면 종료 숫자 바로 이전 숫자까지만 숫자 범위에 포함되는 특성을 고려하여 range(1, n+1)로 작성했다.

 

4. * 기호를 그릴 출력식을 작성

    print('*' * i)

출력문이 반복문 안에 들어가야 하기 때문에 print 함수를 들여 쓰기 해서 작성했다.

 

파이썬에는 문자열에서 사용할 수 있는 연산자가 있다. 문자열을 연결해주는 + 연산자와 문자열을 반복하는 * 연산자이다. 이번 문제는 1부터 n까지의 개수만큼 별 기호를 반복해서 출력해서 문제를 풀 수 있다. 그래서 for문에서 생성된 변수 i의 숫자만큼 '*' 기호 문자열이 반복되도록 * 연산자를 사용했다.

 

5. comprehension 작성

[print('*' * i) for i in range(1, int(input())+1)]

comprehension 표현식은 연습하면 할수록 간편하다. for문을 한 줄로 작성이 가능하고 for 앞쪽에 for문안에 들여 쓰기 해서 작성해야 하는 문장을 입력해주면 된다. 

혹시나 필요하신 분들을 위해 comprehension 표현식의 사용 예시를 작성했던 이전 포스팅 링크를 걸어둔다. ▶comprehension 사용 예시

 

반응형
댓글
반응형