[CodeUp][Python] 1510번 홀수 마방진
https://codeup.kr/problem.php?id=1510&rid=0
홀수 마방진
마방진(magic square)이란 가로, 세로, 대각선의 합이 같은 사각형을 말한다. 홀수 n을 입력으로 받아 n*n 홀수 마방진을 만들어 보자. 만드는 방법은 여러가지 방법이 있지만, 아래와 같은 방법을 이
codeup.kr

문제 설명
마방진(magic square)이란 가로, 세로, 대각선의 합이 같은 사각형을 말한다.
홀수 n을 입력으로 받아 n*n 홀수 마방진을 만들어 보자.
만드는 방법은 여러가지 방법이 있지만, 아래와 같은 방법을 이용하여 구현해보자.
구현 방법:
1. 시작은 첫 행, 한 가운데 열에 1을 둔다.
2. 행을 감소, 열을 증가하면서 순차적으로 수를 넣어간다.
3. 행은 감소하므로 첫 행보다 작아지는 경우에는 마지막 행으로 넘어간다.
4. 열은 증가하므로 마지막 열보다 커지는 경우에는 첫 열로 넘어간다.
5. 넣은 수가 n의 배수이면 행만 증가한다. 열은 변화없음.
입력
마방진의 크기인 n이 입력된다.(n은 50보다 작은 홀수인 자연수)
출력
위의 방법대로 크기가 n인 홀수 마방진을 출력한다.
문제에서 하라는 대로 하면 된다!
n = int(input())
arr = []
# 2차원 리스트 생성
for i in range(n):
temp = [0]*n
arr.append(temp)
arr[0][n//2] = 1
row = 0
column = n//2
num = 2
for i in range(n*n-1):
if (num-1) % n == 0:
# column -= 1
row += 1
else:
column += 1
row -= 1
if row < 0:
row = n-1
if column >= n:
column = 0
arr[row][column] = num
num += 1
for i in range(n):
for j in range(n):
print(arr[i][j], end=' ')
print()
'Algorithm > 알고리즘 문제' 카테고리의 다른 글
[백준/BOJ][Python] 7576번 토마토 (0) | 2023.02.23 |
---|---|
[백준/BOJ][Python] 2606번 바이러스 (0) | 2023.02.23 |
[CodeUp][Python] 1507번 4개의 직사각형 넓이 (0) | 2023.02.17 |
[CodeUp][Python] 1508번 나도 IQ 150 (0) | 2023.02.17 |
[백준/BOJ][Python] 2178번 미로 탐색 (0) | 2023.02.17 |