본문 바로가기
Algorithm/이론

2차원 배열 탐색

by Salgoo26 2021. 8. 22.

목적에 따라 여러가지 방법으로 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()

'Algorithm > 이론' 카테고리의 다른 글

검색 알고리즘  (0) 2021.08.23
부분집합을 구하는 알고리즘 - bit 연산 활용  (0) 2021.08.22
정렬 알고리즘  (0) 2021.08.21
회문 판단  (0) 2021.08.17
2차원 배열 회전  (0) 2021.08.17

댓글