출처] 반크_세계유산 고인돌
문제]
임의의 정수를 입력하여 그 수에 대응하는 숫자 마름모를 출력하시오.
조건)
1. 입력하는 숫자의 범위는 2~6까지의 정수로 한다.
2. 조건 이외의 수가 입력되면 "2~6범위 밖의 수입니다."를 출력하고 다시 입력한다.
3. 출력은 아래와 같이 마름로 형태이어야 한다.
1 | ||
3 | 3 | |
2 |
4. 결과 출력 후, 계속작업여부를 물어 N이면 "수고하셨습니다."를 출력 후 끝낸다.
입력 예시1)
원하는 수를 입력하시오 : 1
출력 예시1)
2~6범위 밖의 수입니다.
다시 입력하세요...
입력 예시2)
원하는 수를 입력하시오 : 5
출력 예시2)
1 | |||||||||
3 | 3 | ||||||||
8 | 2 | 8 | |||||||
20 | 5 | 5 | 20 | ||||||
48 | 12 | 3 | 12 | 48 | |||||
28 | 7 | 7 | 28 | ||||||
16 | 4 | 16 | |||||||
9 | 9 | ||||||||
5 | |||||||||
계속하시겠습니까?(Y/N) p
y/Y/n/N만 입력하세요
다시 입력하세요...
계속하시겠습니까?(Y/N) n
수고하셨습니다.
참고풀이]
#무한반복한다.
while True:
#임의의 정수를 입력받는다.
while True:
N=int(input("원하는 수를 입력하시오 : "))
if 1<N<7: break
print("2~6범위 밖의 수입니다.")
print("다시 입력하세요...")
#(2*N) * (2*N)의 리스트를 선언하고 초기값을 0으로 셋팅한다.
L=[[0 for j in range(N*2)] for i in range(N*2)]
#첫행~끝행의 가운데 열에 1~N까지의 증가값을 넣는다.
#행은 2씩 증가한다.
Cnt=0
c=N-1
for r in range(0,N*2,2):
Cnt+=1
L[r][c]=Cnt
#입력수-1만큼 반복한다.
#행은 0행에서 증가하고 N*2행에서는 감소하여 2씩 증가하여
#값을 넣을 행을 정한다.
#열은 가운데 열을 중심으로 감소열과 증가열을 정하여
#값을 더한다.
r_start=0
r_end=N*2
c_sub=N-1
c_add=N-1
for i in range(N-1):
r_start+=1
r_end-=1
c_sub-=1
c_add+=1
for r in range(r_start, r_end,2):
L[r][c_sub]=L[r-1][c_sub+1]+L[r+1][c_sub+1]
L[r][c_add]=L[r-1][c_add-1]+L[r+1][c_add-1]
#결과출력
for r in range(N*2):
for c in range(N*2):
if L[r][c]==0:
print(" ",end='')
else:
print(f"{L[r][c]:3}",end='')
print()
#계속 작업여부 파악부분
while True:
chk=input("계속하시겠습니까?(Y/N) ")
if chk.upper()=='Y' or chk.upper()=='N':
break
print("y/Y/n/N만 입력하세요")
print("다시 입력하세요...")
if chk.upper()=='N':
break
#작업을 끝낸다.
print("수고하셨습니다.")
참고풀이 결과]
대한민국의 아름다운 영토, 독도의 가을
'프로그램 > Python 1000제' 카테고리의 다른 글
Python 68제] 성적을 선택정렬하여 출력하는 프로그램을 작성하시오. (0) | 2022.04.27 |
---|---|
Python 67제] 1~100까지 수 중 소수 출력하는 프로그램을 작성하시오. (0) | 2022.04.26 |
Python 65제] 4X4 마방진 프로그램을 작성하시오. (0) | 2022.04.21 |
Python 64제] N*N의 홀수 마방진 프로그램을 작성하시오. (0) | 2022.04.20 |
Python 63제] 주민등록번호, 이름, 학번을 입력하여 생일,나이,성별, 기수, 학년, 반, 그리고 번호를 구하시오. (0) | 2022.04.19 |
댓글