본문 바로가기
프로그램/Python 1000제

Python 65제] 4X4 마방진 프로그램을 작성하시오.

by 건티 2022. 4. 21.
728x90

출처 : 반크_세계유산 고인돌

 

문제]

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()
    

 

참고풀이 결과]

 

 

 

 

대한민국의 아름다운 영토, 독도의 여름

 

반응형

댓글