728x90
- 지그재그 순회
# 짝수 행은 왼쪽방향으로 : i%2 == 0 -> j
# 홀수 행은 오른쪽방향으로 : i%2 == 1 -> m-1-j
# i : 행의 좌표
# j : 열의 좌표
for i in range(n):
for j in range(m):
arr[i][j + (m-1-2*j)*(i%2)]
- 2차 배열의 한 좌표에서 4방향의 인접 배열의 요소를 탐색하는 방법
( 각 요소에 대해서 그 요소와 이웃한 요소와의 차의 절댓값의 총합을 구하시오.)
# arr : 5*5 배열
arr = [[5, 6, 24, 25, 10], [6, 18, 9, 16, 11], [3, 11, 20, 19, 16],
[14, 7, 19, 24, 25], [25, 16, 12, 22, 24]]
# dr : 행, dc : 열
# 시계 방향 -> 오,하,왼,상
dr = [0, 1, 0, -1]
dc = [1, 0, -1, 0]
sum_v = 0
for i in range(len(arr)):
for j in range(len(arr[0])):
for k in range(4):
r = i + dr[k]
c = j + dc[k]
# 인덱스가 유효할 때
if 0 <= r < len(arr) and 0 <= c < len(arr[0]):
t = arr[i][j] - arr[r][c]
# 차가 양수면 그대로 더하고, 음수면 - 붙이고 더하기
if t >= 0:
sum_v += t
else:
sum_v -= t
print(sum_v)
- 전치 행렬
1.
# i : 행의 좌표
# j : 열의 좌표
arr = [[1,2,3],[4,5,6],[7,8,9]]
# 목표
# arr^T = [[1,4,7],[2,5,8],[3,6,9]]
for i in range(len(arr)):
for j in range(len(arr[0])):
if i < j:
arr[i][j], arr[j][i] = arr[j][i], arr[i][j]
print(arr)
2.
arr^T = list(map(list,zip(*arr)))
728x90
반응형
'TIL - 프로그래밍 > 개념, 설정' 카테고리의 다른 글
[Python] 알고리즘 (0) | 2022.02.21 |
---|---|
[Python] 패턴 매칭(고지식한, KMP, 보이어-무어), XOR (0) | 2022.02.20 |
[Python] 문자열(String) (0) | 2022.02.20 |
[Python] 2차원 배열 - 연산자, 부분집합 (0) | 2022.02.20 |
[Python-Pycharm] 주석/작동 되지 않을 때, 적을 때마다 수정될 때 (0) | 2022.02.17 |
댓글