주어진 값 n에 대해, n×n 크기의 행렬로 체커보드(체스판) 패턴을 출력하는 것이 이번 글의 목표입니다.
Python의 과학 계산용 기본 패키지인 NumPy는 초기값이 지정된 배열을 손쉽게 생성할 수 있는 다양한 함수를 제공합니다. 그중 zeros() 함수를 활용하면 0으로 채워진 행렬을 만들고, 슬라이싱(slicing) 기법으로 특정 위치에만 1을 채워 체커보드 패턴을 간단히 구현할 수 있습니다.
알고리즘
1단계: 행렬의 차수(n)를 입력받는다. 2단계: zeros((n, n), dtype=int)를 사용해 n×n 행렬을 생성한다. 3단계: 슬라이싱 기법을 이용해 홀수 번째 행·열과 짝수 번째 행·열에 교차로 1을 채운다. 4단계: 완성된 행렬을 출력한다.
예제 코드
import numpy as np
def checkboardpattern(n):
print("Checkerboard pattern:")
x = np.zeros((n, n), dtype = int)
x[1::2, ::2] = 1
x[::2, 1::2] = 1
# 패턴 출력
for i in range(n):
for j in range(n):
print(x[i][j], end =" ")
print()
# 드라이버 코드
n = int(input("Enter value of n ::>"))
checkboardpattern(n)코드 설명
x[1::2, ::2] = 1은 인덱스가 홀수인 행(1, 3, ...)에서 짝수 번째 열(0, 2, ...)에 해당하는 위치에 1을 채웁니다. 반대로 x[::2, 1::2] = 1은 짝수 번째 행에서 홀수 번째 열에 1을 채워, 마치 체스판처럼 0과 1이 교차되는 격자 무늬를 완성합니다.
실행 결과
Enter value of n ::>4 Checkerboard pattern: 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0
n=4를 입력했을 때 위와 같이 4×4 크기의 체커보드 패턴이 정상적으로 출력됩니다. 이 방식은 반복문 없이 슬라이싱만으로 배열을 조작하기 때문에 코드가 간결하고 실행 속도도 빠릅니다.