ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Algorithm] 델타 탐색 - Python
    Algorithm 2023. 11. 7. 17:17

    2차원 배열의 한 좌표에서 4방향(또는 8방향 등 원하는 방향)의 인접 배열 요소를 탐색하는 방법

    arr = [[1, 2, 3],
           [4, 5, 6],
           [7, 8, 9]]
    
    # 상하좌우 방향 제시
    delta_row = [-1, 1, 0, 0]
    delta_col = [0, 0, -1, 1]
    #[0][0]=위 [1][1]=아래 [2][2]=오른쪽 [3][3]=왼쪽
    
    # 상하좌우 한번에 할당
    delta_row_col = [[-1, 0], [1, 0], [0, -1], [0, 1]]
    
    # 2(0, 1)의 위치를 기준
    r = 0
    c = 1
    for i in range(4):
        next_row = r + delta_row[i]  #위치 인덱스 찾기
        next_col = c + delta_col[i]
        
        N = len(arr) # 행 / 열의 길이
        #파이썬에서는 음수인덱스 출력하기에 0~리스트길이의 조건을 줌
        if 0 <= next_row < N and 0 <= next_col < N: 
            print(arr[next_row][next_col])

     

    1) 델타 값은 한 좌표에서 네 방향의 좌표와 x, y의 차이를 저장한 List로 구현한다.

    2) 델타 값을 이용하여 특정 원소의 상하좌우에 위치한 원소에 접근할 수 있다.

    2차원 List의 가장자리 원소들은 상하좌우 네 방향에 원소가 존재하지 않을 경우가 있으므로, Index를 체크하거나 Index 범위를 제한해야 한다.

     

    'Algorithm' 카테고리의 다른 글

    [Algorithm] 백트래킹(backtracking)  (0) 2023.11.07