일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 가톨릭
- 정보
- 잡담만설
- 말씀새기기
- 티스토리챌린지
- 일기처럼 보이는 뻘글
- 추가채용
- 해남버스터미널
- c언어
- 해남종합버스터미널
- 일상
- 설계도
- swap
- 정보보호론
- 끄적끄적
- 광주-해남
- 천주교
- 오블완
- 반복문
- 육아일기
- 슈퍼탱크럼블
- 전산직
- 일기처럼 보이는 잡글
- 컴퓨터일반
- NICU
- 오늘의토픽
- 버스시간표
- Lover
- 슈퍼탱크대작전
- 리안이
- Today
- Total
리안이와 함께하는 세상
[자료구조] 배열의 열 우선, 행 우선 본문
* 행 우선 배열
A[6]이라는 배열이 있을 때
A[6] | A[0] | A[1] | A[2] | A[3] | A[4] | A[5] | |
1 | 2 | 3 | 4 | 5 | 6 |
※보통※ 이런 모양을 생각한다. 이 경우 이차원 배열을 생성하면 줄이 늘어난다.
* Ex) A[5][6] 이라는 배열이 있다고 가정
A[5][6] | A[n][0] | A[n][1] | A[n][2] | A[n][3] | A[n][4] | A[n][5] | |
A[0][m] | 1 | 2 | 3 | 4 | 5 | 6 |
A[1][m] | 7 | 8 | 9 | 10 | 11 | 12 |
A[2][m] | 13 | 14 | 15 | 16 | 17 | 18 |
...
기본적으로 생각하는 이런 방식은 행 우선 방식이다.
즉, 행(두 번째 첨자)을 먼저 채우고, 열(첫 번째 첨자)로 넘어가는 방법이다.
따라서 A[2][3] 의 위치를 알려면, 행을 지정된 열의 수 만큼 채우고, 지정된 행의 위치를 찾아가면 된다.
즉, 행의 길이 = 6 이므로,
지정된 열 (2 +1 -1) X 행의 길이(6) + 지정된 행(3 + 1)
※ 배열은 0부터 시작한다. 참조문자가 2를 지정하고 있다면 실제 위치는 3이 된다.
지정된 열 은 사실은 2 + 1 - 1 이다. 참조문자 2 에 실제 위치 + 1, 마지막 열은 빼야하므로 -1
> 그래서 열은 지정된 대로 그냥 쓰면 된다.
따라서 위치는 16이 된다.
* 열 우선 배열
이 경우, A[5]라는 배열이 있을 때
A[5] | |
A[0] | 1 |
A[1] | 2 |
A[2] | 3 |
A[3] | 4 |
A[4] | 5 |
이런 모양으로 생성된다. 따라서 이차원 배열을 생성하면 칸이 늘어난다
(사실 칸이든 줄이든 의미는 없다)
* Ex) A[5][6] 이라는 배열이 있다고 가정
|
|
|
|
...
이런 모양이 된다.
즉, 열을 먼저 채우고, 행으로 넘어가는 방법이다.
따라서 A[2][3] 의 위치를 알려면, 열을 지정된 행의 수 만큼 채우고, 지정된 열의 위치를 찾아가면 된다.
즉, 열의 길이 = 5 이므로,
지정된 행 ( 3 +1 -1) X 행의 길이(5) + 지정된 열(2 + 1)
따라서 위치는 15 + 3 = 18이 된다.
머리로 그림을 그리면 빨리 해결됨!
※ 행 우선과 열 우선은 숫자를 채워 넣는 방식이 다르다!
※ 배열의 주소가 0부터 시작한다면,
1 의 주소가 0이기 때문에
찾은 위치에서 1을 빼야 한다.
(아니면 행 or 열을 더할 때 1을 더하지 말든가)
'9급 공무원 > 컴퓨터 일반' 카테고리의 다른 글
[자료구조] 스택 동적 배열 (0) | 2017.03.05 |
---|---|
[자료구조] 스택의 응용 (0) | 2017.03.05 |
[데이터베이스] 최신 기술 동향 (0) | 2017.03.05 |
[데이터베이스] 장애와 극복 (0) | 2017.03.05 |
[데이터베이스] 트랜잭션 (0) | 2017.03.05 |