1. 행 또는 열에 대칭 출력
Q) 모래시계 출력
>> 3
* * * * *
* * *
*
* * *
* * * * *
>> 2
* * *
*
* * *
n=int(input())
"""
행의 개수는 n+(n-1)
1번째 줄 별의 개수 : 2*n-1
n번째 줄 별의 개수 : 1
"""
cnt=2*n+1 # 별 개수
cnt2=-1 # 공백 개수
for i in range(2*n-1):
# 1 ~ n번째 줄은 별의 개수가 2개씩 감소
# 공백 개수는 1개씩 증가
if i<n:
cnt-=2
cnt2+=1
# n+1 ~ 2n-1번째 줄은 별의 개수가 2개씩 증가
# 공백 개수는 1개씩 감소
else:
cnt+=2
cnt2-=1
# 공백 출력
for j in range(cnt2):
print(' ',end=' ')
# 별 출력
for j in range(cnt):
print('*',end=' ')
print()
Q) 다이아몬드 출력
>> 2
*
* *
*
>> 3
*
* *
* * *
* *
*
n=int(input())
"""
전체 행의 개수 : n+(n-1)
n번째 줄의 별 개수 : n개
1번째 줄의 공백 개수 : n-1개
"""
cnt=0 # cnt : 별의 개수
blank=n # blank : 공백 개수
for i in range(2*n-1):
# 1 ~ n번째 줄의 별의 개수는 1씩 증가, 공백은 1씩 감소
# n+1 ~ 2n-1번째 줄의 별의 개수는 1씩 감소, 공백은 1씩 증가
if i<n:
cnt+=1
blank-=1
else:
cnt-=1
blank+=1
# 공백 출력
for j in range(blank):
print(' ',end='')
# 별 출력
for j in range(cnt):
print('*',end=' ')
print()
2. 행에 따라 모양을 다르게 출력
Q) 계단 출력
>> 2
*
* *
*
* * * *
>> 3
*
* *
*
* * * *
*
* * * * * *
n=int(input())
cnt=0 # 짝수 번째 줄의 별의 개수
# 전체 행의 개수 : 2n
for i in range(2*n):
# 홀수 번째 줄은 1개만 출력
# 짝수 번째 줄은 2개씩 증가 출력
if i%2==0:
print('*', end=' ')
else:
cnt+=2
for j in range(cnt):
print('*',end=' ')
print()
Q) 조건에 맞는 별 출력
- n을 입력
- 홀수 번째 줄에는 별의 개수를 n, n-1, n-2... 2, 1 개 출력
- 짝수 번째 줄에는 별의 개수를 1, 2, 3,... n-1, n개 출력
예시)
>> 3
* * *
*
* *
* *
*
* * *
>> 4
* * * *
*
* * *
* *
* *
* * *
*
* * * *
n=int(input())
cnt=n # 홀수 번째 줄의 별의 개수
# 전체 행의 개수 : 2n
for i in range(1,2*n+1):
if i%2!=0:
for j in range(cnt):
print('*',end=' ')
cnt-=1
else:
for j in range(i//2):
print('*',end=' ')
print()
3. 행, 열에 규칙을 찾아 출력
Q) nXn 사각형
>> 2
* * * * *
* * *
* * * * *
* * *
* * * * *
>> 3
* * * * * * *
* * * *
* * * * * * *
* * * *
* * * * * * *
* * * *
* * * * * * *
● 문제 접근
- 자연수 n 입력
1. 전체 행의 개수 : 2n+1
2. 홀수 번째 줄의 별의 개수 : 2n+1
3. 짝수 번째 줄의 별 출력
- 2n+1만큼 반복문을 수행
- 홀수번째는 별 출력
- 짝수번째는 공백 출력
n=int(input())
for i in range(1,2*n+2):
if i%2==1:
for j in range(2*n+1):
print('*',end=' ')
else:
for j in range(2*n+1):
if j%2==1:
print(' ',end=' ')
else:
print('*',end=' ')
print()
Q) 사각형 내부의 계단 출력
>> 5
* * * * *
* *
* * *
* * * *
* * * * *
>>6
* * * * * *
* *
* * *
* * * *
* * * * *
* * * * * *
● 문제 접근
- 자연수 n을 입력
1. 전체 행의 개수 : n
2. 제일 윗줄과 아랫줄의 별의 개수 : n
3. 나머지 줄의 별의 개수
- 양 끝에 별 출력 (2개)
- cnt 변수를 활용해 조건에 만족하면 공백을 아니면 별을 출력
- 한 줄이 완성되면 cnt를 1 증가
n=int(input())
cnt=0
for i in range(n):
if i==0 or i==n-1:
for j in range(n):
print('*',end=' ')
else:
for j in range(n):
if j==0 or j==n-1:
print('*',end=' ')
elif j>cnt:
print(' ',end=' ')
else:
print('*',end=' ')
cnt+=1
print()