Python/[코드트리]
[코드트리] 2차원 배열과 패턴 > 격자 반대로 채우기(★)
hyunnn_00
2023. 7. 14. 15:46
n x n 크기의 격자에 정수를 채워넣으려고 합니다. 1부터 시작해서 차례대로까지 채워넣는데, 다음 그림과 같이 오른쪽 아래에서 부터 위 아래 지그재그 방향으로 채워넣는 프로그램을 작성해보세요.
해설 알고리즘
# 변수 선언 및 입력
n = int(input())
answer = [
[0 for _ in range(n)]
for _ in range(n)
]
count = 1
# 격자를 채워줍니다.
for col in range(n - 1, -1, -1):
if (n - 1 - col) % 2 == 0:
# 이 케이스에는 아래에서 위로 값을 채워줍니다.
for row in range(n - 1, -1, -1):
answer[row][col] = count
count += 1
else:
# 이 케이스에는 위에서 아래로 값을 채워줍니다.
for row in range(n):
answer[row][col] = count
count += 1
# 출력:
for row in answer:
for elem in row:
print(elem, end=" ")
print()
# 나의 풀이
n = int(input())
arr_2d = [
[0 for _ in range(n)] for _ in range(n)
]
num = 1
if n % 2 == 0:
for col in range(n-1, -1, -1):
if col % 2 == 0:
for row in range(n):
arr_2d[row][col] = num
num += 1
else:
for row in range(n-1, -1, -1):
arr_2d[row][col] = num
num += 1
else:
for col in range(n-1, -1, -1):
if col % 2 == 0:
for row in range(n-1, -1, -1):
arr_2d[row][col] = num
num += 1
else:
for row in range(n):
arr_2d[row][col] = num
num += 1
# 출력
for row in range(n):
for col in range(n):
print(arr_2d[row][col], end = " ")
print()