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)
'알고리즘 문제풀이 > Python 알고리즘 문제풀이' 카테고리의 다른 글
알파벳 3개의 단어 뽑기_3중 for문 (0) | 2020.03.27 |
---|---|
로또 번호 뽑기 문제 (0) | 2020.03.26 |
소수 구하기_for와 if문 (2) | 2020.03.24 |
width와 height를 입력받아 삼각형의 넓이를 구하시오. (0) | 2020.03.22 |
1~100까지 합을 구해주세요_for문 (0) | 2020.03.20 |