티스토리 뷰
[Python] 백준 알고리즘 온라인 저지 10996번 : 별 찍기 - 21
Python3 코드
n = int(input())
for _ in range(n):
print('* '* (n - n//2))
print(' *'* (n//2))
Python3 코드 풀이
1. 코드 풀이에 대한 요약 정리
이 문제는 숫자를 입력받으면 입력받은 수만큼의 * 기호를 2줄에 나누어서 입력하고 입력받은 숫자만큼 반복해서 표기하는 문제이다. 입력받는 숫자가 짝수이면 같은 수로 2줄로 나누어 그릴 수 있고 홀수이면 윗줄에 하나 더 많이 그린다. 그리고 * 기호 사이에는 공백으로 구분한다.
* 기호를 표기 할 때, 첫 번째 줄은 * 기호부터 시작되고 두 번째 줄은 공백부터 시작된다. 문자열로 표현한다면 첫째줄은 '* ' 모양의 반복이고 두 번째 줄은 ' *'의 반복이다. 이러한 규칙을 코드로 작성하였다.
2. for문으로 입력 받은 숫자만큼 반복해서 * 기호를 표기한다.
for _ in range(n):
print('* '* (n - n//2))
print(' *'* (n//2))
입력받은 수만큼 for문을 반복할 때 for문에서 실행할 문장은 두 줄의 print( ) 함수를 이용해서 작성했다.
입력받는 숫자는 n 변수에 선언하였다. n이 짝수인 경우 2줄에 나뉘는 * 기호 숫자는 동일하지만 n이 홀수인 경우에는 윗줄에 * 기호가 하나 더 많아야 한다. 이러한 규칙성을 // 연산자를 이용해서 2로 나눈 몫으로 표현했다.
문자열은 두 가지의 연산자를 사용할 수 있다. + 와 *인데 +는 문자를 붙여주는 기능을 하고 * 연산자는 문자열을 반복하는 기능을 한다. 첫 줄과 둘째 줄의 반복할 숫자는 n-n//2와 n//2로 구하고서 첫째줄은 '* ', 둘째 줄은 ' *' 문자를 * 연산자로 반복하도록 했다.
반응형
'파이썬 스킬업 > 백준 알고리즘 연습' 카테고리의 다른 글
백준 2562번 [파이썬 알고리즘] 최댓값 (0) | 2020.07.05 |
---|---|
백준 2446번 [파이썬 알고리즘] 별 찍기 - 9 : zip함수 이용 (0) | 2020.07.05 |
백준 5543번 [파이썬] 상근날드 (0) | 2020.07.04 |
댓글
반응형