[강좌] 프로그래밍 초급 훈련 09 - 배열

문제를 모두 푸셨다면 여러분은 일단 왕초보 딱지는 떼었다고 봐도 과언이 아닙니다. 더욱더 재미를 느끼실 수 있도록 좀더 복잡한 내용으로 들어가 보겠습니다.

만약 학생 관리 프로그램을 만든다고 가정합시다. 일단 가장 기본적으로 학생들의 이름이 저장되어야 하고, 학생들의 목록을 출력해 볼 수 있어야 하고, 학생의 이름을 검색할 수 있어야 할것입니다.

우리가 배운건 String 문자열 변수를 배웠습니다. 이것으로 프로그램을 개발한다면 아마 아래와 같이 해야될 것입니다.


string student1 = "나연"
string student2 = "정연"
string student3 = "모모"
string student4 = "쯔위"
.
.
.
 

학생 10명이라면 어느정도 수용이 가능하겠지만 100명이라면 어떨까요? 아마 이렇게 짠다는건 무모한 행위일 것입니다. 이 경우에 사용하는 자료구조가 배열입니다. 배열은 같은 자료형을 가진 변수들을 번호를 매겨서 일렬로 쭉 줄을 세워놓고, 관리를 할 수 있는 도구입니다. 코드로 먼저 살펴보겠습니다.


string[] array = new string[10];
array[0] = "나연";
array[1] = "정연";
array[2] = "모모";
array[3] = "쯔위";
.
.
.

그런데 뭔가 이상합니다. 분명 효율적인 무언가 기대했을텐데 코드 라인수가 오히려 한줄 더 많습니다. 여기수 중요한 부분은 코드 라인수가 아니고, 배열 array 옆의 인덱스 연산자 []입니다. 데이터 하나하나를 인덱스 번호를 부여하여 관리하는 것을 볼 수 있습니다. 배열을 선언할때 string[10]이라고 적었으니 아마도 이 배열은 10개까지만 저장될 수 있는 것 같습니다. 인덱스 번호의 시작은 1이 아니고 0부터 시작합니다. 다 그런것은 아니지만 프로그래밍에서는 무언가 시작할때의 번호는 1이 아닌 0부터 시작입니다. 이는 나중에 깨닫게 되시겠지만 상당히 자연스럽고 효율적인 방법입니다.

위와 같이 일렬로 관리하는 배열을 일차원 배열이라고 부릅니다. 수학에서 말하는 일차원은 선분입니다. 선형으로 배열을 관리한다는 뜻입니다. 그럼 엑셀에서 사용하는 테이블 형태로 데이터를 관리하려면 어떤 배열을 써야 할까요? 이차원 배열입니다. 수학에서는 평면을 의미합니다. 따라서 프로그래밍에서도 이차원 배열은 평면에 데이터를 나열한 것처럼 관리할 수 있습니다.

바로 예제를 하나 보겠습니다.


static void Main(string[] args)
{
    int[,] a = new int[10, 10];

    int n = 0;
    Console.Write("number = ");

    n = int.Parse(Console.ReadLine());

    // 데이터 입력 부분
    int count = 1;
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; j++)
        {
            a[i, j] = count++;
        }
    }

    // 데이터 출력 부분
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < n; j++)
        {
            Console.Write("{0,4}", a[i, j]);
        }
        Console.WriteLine();
    }
}

실행화면



8번 강좌의 1번문제를 배열을 이용해서 풀었습니다. 2차원 배열을 이용하였습니다. 2차원 배열의 인덱스 번호는 아래 표와 같습니다.

[i, j]
[0, 0]
[0, 1]
[0, 2]
[0, 3]
[0, 4]
[1, 0]
[1, 1]
[1, 2]
[1, 3]
[1, 4]
[2, 0]
[2, 1]
[2, 2]
[2, 3]
[2, 4]
[3, 0]
[3, 1]
[3, 2]
[3, 3]
[3, 4]
[4, 0]
[4, 1]
[4, 2]
[4, 3]
[4, 4]

이중 for문을 이용해서 위 2차원 배열에 데이터를 넣습니다. 그리고 데이터 출력부분으로 내려와 다시 이중 for문이 돌면서 데이터를 순서대로 출력합니다. 이는 아주 좋은 구조입니다. 나중에 프로그래밍을 계속 하다보면 이 구조가 많은 것을 이야기 한다는 것을 알 수 있을 것입니다.

이 간단한 예제를 지지고 볶아서 다음 강좌에서 다시 배열을 이용한 문제를 풀어보겠습니다.


[강좌] 프로그래밍 초급 훈련 09 - 배열 [강좌] 프로그래밍 초급 훈련 09 - 배열 Reviewed by Tae-seob Shin on 10월 09, 2018 Rating: 5

댓글 없음:

Powered by Blogger.