728x90
📍 n * n
행렬에서 target * target
크기만큼 자르기
가로세로가 동일한 n*n
행렬에서 n
보다 작은 target*target
행렬만큼 잘라 출력하고 싶을 때는 다음과 같이 작성하자. 예를 들어, n = 5
, target = 3
일때는 다음과 같은 과정을 거친다.
arr
행렬을 초기화해준다. 출력 값이 제대로 나오는지 확인하기 위해arr
은 1부터 차례대로 증가하는 행렬로 초기화한다.- 범위를
n
으로 하는 이중 반복문을 선언한다. 이때index
오류를 방지하기 위해n
을target-1
로 빼준다.-1
을 빼주지 않으면 제일 마지막 행과 열은 계산하지 않으니까 꼭 빼주도록 하자. - 이중 반복문안에 이중 반복문을 한번 더 선언한다. 가독성을 위해
each_case
라는 함수를 선언했는데, 중요한 점은 출력하려는 좌표에i+a, j+b
를 해줘야 모든 좌표를 출력할 수 있다.
n = 5 target = 3 arr = [[0] * n for _ in range(n)] cnt = 0 # use def function def each_case(a, b): # target * target 행렬 출력 for i in range(target): for j in range(target): print(arr[i+a][j+b], end=' ') print() print() for i in range(n): # arr 행렬 초기화 for j in range(n): cnt += 1 arr[i][j] = cnt for i in range(n-(target-1)): # n * n 행렬 안에서 each_case 함수 실행 for j in range(n-(target-1)): each_case(i, j)
# not use def function for i in range(n): for j in range(n): cnt += 1 arr[i][j] = cnt for i in range(n-(target-1)): for j in range(n-(target-1)): for k in range(target): for l in range(target): print(arr[k + i][l + j], end=' ') print() print()
👉🏽 출력은 동일 1 2 3 6 7 8 11 12 13 2 3 4 7 8 9 12 13 14 3 4 5 8 9 10 13 14 15 6 7 8 11 12 13 16 17 18 7 8 9 12 13 14 17 18 19 8 9 10 13 14 15 18 19 20 11 12 13 16 17 18 21 22 23 12 13 14 17 18 19 22 23 24 13 14 15 18 19 20 23 24 25
반응형
'Python > 파이썬 문법 Tips' 카테고리의 다른 글
[ 파이썬(Python) ] 2차원 행렬에서 세로로 최대값, 최소값 갱신하기 (0) | 2021.05.27 |
---|---|
[ 파이썬(python) ] 범위가 큰 2차원 배열 / 문자열을 출력 할 때 (0) | 2021.05.27 |
[ 파이썬(python) ] 이중 반복문에서 print의 위치 별 출력 (0) | 2021.05.19 |
[ 파이썬(python) ] cnt 유용하게 사용하기 (0) | 2021.05.18 |
[ 파이썬(python) ] 리스트, 문자열 거꾸로 출력하기 (0) | 2021.05.12 |
댓글