티스토리 뷰

# 3원 대각 행렬 문제


 문제) 3원 대각 행렬(tridiagonal matrix)은 아래와 같이 정방 행렬(square matrix)에서 주대각선(major diagonal)과 이 주대각선의 바로 위 아래의 대각선에 있는 원소를 제외한 다른 모든 원소가 0인 행렬이다.

 이 세 개의 대각선 위에 있는 원소들이 배열 $b$에,  $a[ 0 ][ 0 ]$은 $b[ 0 ]$에 저장된다. 배열 $b$에서  a[ i ][ j ] $(0$$\leq$i,  $j<n)$의 원소값을 구하는 알고리즘을 작성하라.



# 풀이


 3원 대각행렬의 원소들이 어떻게 저장되는지 규칙성을 찾아보면, 첫행과 마지막 행을 제외하고 모든 행이 전부 3개의 원소로 이루어져 있다는 규칙성을 발견할 수 있다. 


 각 원소가 어떻게 저장되는지 직접 써본다면 $a[0,0]$ =  $b[0]$,  $a[0,1]$ =  $b[1]$,  $a[1,0]$ =  $b[2]$,  $a[1,1]$ =  $b[3]$,  $a[1,2]$ =  $b[4]$,  $a[2,1]$ =  $b[5]$ ... 이므로 우리는 a[ i, j ] = b[ 2i + j ] 라는 규칙성을 찾을 수 있다. 이걸 토대로 작성하면 3원 대각행렬의 원소를 알아낼 수 있는 알고리즘을 작성할 수 있다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday