python

Unit 19 문제 풀이

DongSup 2022. 1. 15. 22:33
Unit 19

 

19.5 연습 문제 ▶ 다음 소스 코드를 완성하여 역삼각형 모양으로 별이 출력되게 만드세요.

# 결과 
# *****
#  ****
#   ***
#    **
#     *

# for i in range(5):
#     for j in range(5): 
#         ____________               
#     print()

# 정답
for i in range(5):
    for j in range(5): 
        if j < i: 
            print(' ', end='')
        else: 
            print('*', end='')              
    print()


바깥쪽 루프로 시작하여 안쪽 루프가 가로 방향으로 
j 값을 출력하는 방식입니다.
윗부분이 넓고 아래로 갈수록 좁아지는 삼각형 모양인데 공백 부분이 하나씩 늘어나고 있습니다.
if j < i:와 같이 작성하여 가로 방향으로 공백을 출력할 때는 세로 방향의 변수 i보다 작을 때까지 출력하고,
반대되는 조건에서는 별을 출력하도록 하여 세로로 내려갈수록 공백이 늘어나도록 해줍니다.

 

 


 

 

19.6 실습 문제 ▶ 표준 입력으로 삼각형의 높이가 입력됩니다. 

입력된 높이만큼 산 모양으로 별을 출력하는 프로그램을 만드세요
(input에서 안내 문자열은 출력하지 않아야 합니다). 이때 출력 결과는 예제와 정확히 일치해야 합니다. 
모양이 같더라도 공백이나 빈 줄이 더 들어가면 틀린 것으로 처리됩니다.

 

# 입력 : 3
# 결과
#   *
#  ***
# *****

a = int(input()) 
i = a-1  # 빈칸 = 높이 수-1
 
for i in range(a):  # 세로 방향
    for j in range(a + i):  # 가로 방향 
        if j < i:  
            print(' ', end = '')
        else:  
            print('*', end = '')
    print()  # 다음 줄로 넘어감
    i -= 1  # 밑으로 갈 수록 공백이 하나씩 줄어듦
    
# a = int(input())
# for i in range(a): 
#  for j in range(a-i-1): 
#    print(' ',end='') 
#  for j in range(2*i+1): 
#    print('*',end='')
#  print()

 

가로 방향 반복문은 for j in range(a):로 range에서 생성되는 마지막 숫자가 지정된 숫자보다 1이 더 작습니다.
end = '' 를 지정하여 줄바꿈을 하지 않도록 해줍니다.
조건식을 j < i와 같이 작성하여 가로 방향( j )의 변수가 세로 방향( i )의 변수보다 작을 때 출력하여
i가 증가할 때마다 별이 늘어날 수 있도록 만듭니다.
j가 i보다 작을 때만 출력하므로 첫 번째 줄은 출력하지 않습니다.

 


참조 : https://dojang.io/course/view.php?id=7