티스토리 뷰
[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 사용 예시
'파이썬 스킬업 > 백준 알고리즘 연습' 카테고리의 다른 글
백준 10951번 [Python] A+B - 4 : try - except 구문 활용 (1) | 2020.07.04 |
---|---|
백준 11022번 [파이썬] A+B - 8 (0) | 2020.07.03 |
백준 11021번 [파이썬 알고리즘] A+B - 7 (0) | 2020.07.03 |