Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

NumPy를 활용해 n×n 체커보드 패턴을 출력하는 Python 프로그램

주어진 값 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 크기의 체커보드 패턴이 정상적으로 출력됩니다. 이 방식은 반복문 없이 슬라이싱만으로 배열을 조작하기 때문에 코드가 간결하고 실행 속도도 빠릅니다.