본문 바로가기

알고리즘 문제풀이/Python 알고리즘 문제풀이

마름모 구하기_for문

1 ~ 15 사이의 홀수만입력됩니다.

홀수 마름모를 그려주세요.

  • 입력:
    5

  • 출력:

   * 
  ***
 *****
  ***
   *

친구들이랑 같이 풀었는데 다들 다르게 풀어서 여러 풀이를 올려봅니다!

 

1. *이 찍히기 시작할 start와 마지막 *의 위치 end, 그리고 *의 숫자가 증가하는지 여부 increase를 두고

if로 상황을 구분해 작성

n = int(input())

# 꽉 찰때까지 1개씩 앞으로
# 꽉 찰때 = 0일때
start = n//2

# 꽉 찰때까지 1개씩 뒤로
# 꽉 찰때 = start가 0 일때
end = n//2

increase = True

for i in range(n):
    for j in range(5):
        if j==start:
            print("*" * (end-start+1), end="")
            print(" " * (n-1-end), end="")
            if (start != 0) & (increase == True):
                start -= 1
                end += 1
            elif (start == 0) | (increase == False):
                increase = False
                start += 1
                end -= 1
            break
        else:
            print(" ", end="")
    print()

 


2. 찍히는 모양을 1번공백 / * 부분/ 2번공백 으로 구분한 다음 각각의 개수를 계산하는 방법

input : 5 면

1번줄 : 2개 공백 / 1개 * / 2개 공백

2번줄 : 1개 공백 / 3개 * / 1개 공백

3번줄 : 0개 공백 / 5개 * / 0개 공백

4번줄 : 1개 공백 / 3개 * / 1개 공백

5번줄 : 2개 공백 / 1개 * / 2개 공백

 

num = 5
for i in range(1, num+1):
    print(abs(5-(2*i-1))//2)

이렇게 숫자가 나오기 때문에

 이를 이용해 아래 코드를 구현

num = int(input("홀수를 넣어주세요: "))
for i in range(1,num+1):
    blank = abs((num-(2*i-1))//2)
    star = num-blank*2
    print(" "*blank, "*"*star, " "*blank)