티스토리 뷰
[Python] 백준 알고리즘 온라인 저지 2446번 : 별 찍기 - 9
Python3 코드
1) 첫 번째 코드 - zip 함수를 이용
n = int(input())
for bin, star in zip(range(n-1), range(n*2-1 , 1, -2)) : # zip(공백, 별)
print(' '*bin + '*'*star)
for bin, star in zip(range(n)[::-1], range(1, n*2, 2)) : # zip(공백, 별)
print(' '*bin + '*'*star)
공백과 별의 개수를 각각 range함수로 구하고서 zip함수를 이용해 짝으로 묶었다. 위 코드에서 print문을 수정해서 bin, star 변수의 값을 출력해보면 아래와 같다. 공백과 별의 수를 출력하고 ' / ' 기호로 각 출력 값을 구분해보았다.
>>> n = 5
>>> for bin, star in zip(range(n-1), range(n*2-1 , 1, -2)) :
>>> print(bin, star, end=' / ')
0 9 / 1 7 / 2 5 / 3 3 /
>>> for bin, star in zip(range(n)[::-1], range(1, n*2, 2)) :
>>> print(bin, star, end = ' / ')
4 1 / 3 3 / 2 5 / 1 7 / 0 9 /
2) 두번째 코드 - 공백과 별 개수의 규칙을 print 함수에서 산술식으로 나타냈다.
n = int(input())
for i in range(1, n+1)[::-1] : # 1부터 n까지 역순
print(' '*(n-i) + '*'*(i*2-1))
for i in range(2, n+1): # 2부터 n까지
print(' '*(n-i) + '*'*(i*2-1))
Python3 코드 풀이
1. 작성한 코드에 대한 전체적인 내용 정리
이번 문제는 * 기호를 모래시계 모양으로 찍어내는 문제이다. 숫자 n을 입력받으면 위에서부터 n번째 줄에 * 기호가 하나를 기준으로 한다. 그리고 위아래로 각각 n-1개의 줄만큼 *기호를 그리는데 n번째 줄에 * 기호가 한 개인 것을 기준으로 1,3,5,7,9,... 이런 식으로 개수가 증가하게 된다.
이러한 모래시계 모양으로 별을 찍기 위해서 * 기호와 공백의 개수에 규칙을 만들어서 코드를 작성하였다. 위에서 사용한 zip 함수에 대해 설명하면 아래와 같다.
2. zip( ) 함수에 대해서
개수가 동일한 자료형을 짝으로 묶어주는 함수이다. 괄호( )안에 리스트, 튜플, 문자 열등 반복 가능한 iterable 자료형을 입력하여 사용할 수 있다. 입력된 자료형의 같은 인덱스끼리 슬라이스 하여 묶어준다. 사용 예시를 보면 아래와 같다.
>>> one = [1, 2, 3]
>>> two = [1, 2, 3]
>>> thr = [1, 2, 3]
>>> zip_list = list(zip(one, two, thr))
>>> print(zip_list)
[(1, 1, 1), (2, 2, 2), (3, 3, 3)]
반응형
'파이썬 스킬업 > 백준 알고리즘 연습' 카테고리의 다른 글
백준 10996번 [파이썬 알고리즘] 별 찍기 - 21 (0) | 2020.07.05 |
---|---|
백준 5543번 [파이썬] 상근날드 (0) | 2020.07.04 |
백준 1110번 [파이썬 알고리즘] 더하기 사이클 (0) | 2020.07.04 |
댓글
반응형