티스토리 뷰
Develop Story/Data Structure & Algorithm
<사고력 훈련 문제 #7>: 3원 대각 행렬(tridiagonal matrix)
wisecow 2017. 8. 11. 14:29# 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원 대각행렬의 원소를 알아낼 수 있는 알고리즘을 작성할 수 있다.
'Develop Story > Data Structure & Algorithm' 카테고리의 다른 글
<사고력 훈련 문제 #9>: random walk 문제 (0) | 2017.08.11 |
---|---|
<사고력 훈련 문제 #8>: 정방 밴드 행렬(square band matrix) (0) | 2017.08.11 |
<사고력 훈련 문제 #6>: 삼각행렬의 원소의 주소를 구하기 (0) | 2017.08.11 |
<사고력 훈련 문제 #5>: 행렬의 안장점 찾기 (0) | 2017.08.11 |
<사고력 훈련 문제 #4>: 배열 뒤집기 문제 (0) | 2017.08.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday