목적에 따라 여러가지 방법으로 2차원 배열을 탐색할 수 있다.
# 2차원 배열
arrs = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 1. 행 & 열 우선 탐색
# 행우선
for i in range(len(arrs)):
for j in range(len(arrs[0])):
print(arrs[i][j], end=' ')
print()
# 열우선
for j in range(len(arrs[0])):
for i in range(len(arrs)):
print(arrs[i][j], end=' ')
print()
# 2. 지그재그 순회
# 지그재그 순회
for i in range(len(arrs)):
for j in range(len(arrs[0])):
print(arrs[i][j + (i % 2) * (len(arrs[0])-1-2*j)], end=' ')
print()
# 3. 전치행렬 만들기
# 전치행렬 만들기
for i in range(3):
for j in range(3):
if i < j:
arrs[i][j], arrs[j][i] = arrs[j][i], arrs[i][j]
for arr in arrs:
print(*arr)
# 4. 델타 탐색
# 2차원 배열 입력 및 생성
arrs = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 델타 탐색 - 우, 하, 좌, 상 순으로 탐색
dx = [1, 0, -1, 0]
dy = [0, 1, 0, -1]
i, j = 0, -1 # 시작 지점
k = 0 # 방향
while i != 1 or j != 0: # 4를 출력할 때까지
ni, nj = i + dy[k], j + dx[k] # 다음 위치
if (0 <= ni < 3) and (0 <= nj < 3): # 다음 위치에 대한 조건
print(arrs[ni][nj], end=' ') # 다음 위치 출력
i, j = ni, nj # 조건에 맞을 경우 다음 위치로 이동
else:
k = (k + 1) % 4 # 방향 변경
print()
댓글