출처 : 반크_세계유산 고인돌
문제]
4X4 마방진 프로그램을 작성하시오.
1 | 15 | 14 | 4 |
12 | 6 | 7 | 9 |
8 | 10 | 11 | 5 |
13 | 3 | 2 | 16 |
참고풀이]
#4X4 리스트 3개 선언한다.
L1=[[0 for j in range(4)] for i in range(4)]
L2=[[0 for j in range(4)] for i in range(4)]
L3=[[0 for j in range(4)] for i in range(4)]
#L1에는 1~16까지 순차값을 L2에는 16~1까지 역순차값을 넣는다.
n=0
for r in range(4):
for c in range(4):
n+=1
L1[r][c]=n
L2[r][c]=17-n
#L3에 L1의 대각선 위치에 있는 값을 넣는다.
r=0
c=0
for i in range(4):
L3[r][c]=L1[r][c]
L3[r][3-c]=L1[r][3-c]
r+=1
c+=1
#L3의 0인 위치에 L2의 값을 넣는다.
for r in range(4):
for c in range(4):
if L3[r][c]==0:
L3[r][c]=L2[r][c]
#결과 출력
for r in range(4):
for c in range(4):
print(f"{L3[r][c]:3}",end='')
print()
#4X4 마방진이 맞는지 확인하는 부분
#L3 리스트의 값들의 행, 열, 그리고 대각선의 합을 구한다.
Lsum=[[0 for j in range(6)] for i in range(6)]
i=1
j=0
for r in range(4):
for c in range(4):
Lsum[i][j]=L3[r][c]
Lsum[i][4] += L3[r][c]
Lsum[5][j] += L3[r][c]
j+=1
Lsum[0][4] += L3[r][c]
Lsum[5][4] += L3[r][r]
i+=1
j=0
#결과 출력
print("\n[4X4 마방진의 행, 열, 그리고 대각선의 합 결과]")
for r in range(6):
for c in range(6):
if Lsum[r][c]==0:
print(f"{' ':3}",end='')
else:
print(f"{Lsum[r][c]:3}",end='')
print()
참고풀이 결과]
대한민국의 아름다운 영토, 독도의 여름
'프로그램 > Python 1000제' 카테고리의 다른 글
Python 67제] 1~100까지 수 중 소수 출력하는 프로그램을 작성하시오. (0) | 2022.04.26 |
---|---|
Python 66제] 숫자 마름모 출력하는 프로그램을 작성하시오. (0) | 2022.04.25 |
Python 64제] N*N의 홀수 마방진 프로그램을 작성하시오. (0) | 2022.04.20 |
Python 63제] 주민등록번호, 이름, 학번을 입력하여 생일,나이,성별, 기수, 학년, 반, 그리고 번호를 구하시오. (0) | 2022.04.19 |
Python 62제] 임의의 두자리 수를 10개 입력하여 최대값과 최소값의 차를 구하시오. (0) | 2022.04.19 |
댓글