배열(Array)이란

데이터를 나열하고, 각 데이터를 인덱스에 대응하도록 구성한 데이터 구조이다.

파이썬에서는 리스트 타입이 배열 기능을 제공하고 있다.

 

배열이 필요한 이유

같은 종류의 데이터를 효율적으로 관리하기 위해 사용한다.

같은 종류의 데이터를 순차적으로 저장한다.

 

배열의 장점

빠른 접근 가능(인덱스를 이용하여 순차적 접근이 아닌 찾고자하는 데이터의 인덱스만 알면 바로 찾을 수 있다.)

 

배열의 단점

추가/삭제가 쉽지않다.

미리 최대 길이를 지정해야 한다.

 

파이썬과 C언어 배열 예제

C언어

#include <stdio.h>

int main(int argc, char* argv[])
{
    char country[3] = "US";
    printf("%c%c\n", country[0], country[1]);
    printf("%s \n", country);
    return 0;
}

Python

country = 'US'
print(country)

country = country + 'A'
print(country)

파이썬은 C언어와 다르게 배열의 최대길이를 설정해주지 않는데 이것은 파이썬에서 리스트를 이용해 배열을 만들기 때문이다.

 

파이썬 리스트를 활용한 배열

# 1차원 배열: 리스트로 구현시
data = [1, 2, 3, 4, 5]

# 2차원 배열: 리스트로 구현시
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

 

 

 

자료구조(데이터구조, data structure)란

자료(Data)란 현실 세계로부터 수집한 사실이나 개념의 값 또는 이들의 집합을 의미한다.

자료구조(Data Structure)란 자료의 집합을 의미하며 각 원소들 사이의 관계가 논리적으로 정의된 일정한 규칙에 의하여 나열되며 자료에 대한 처리를 효율적으로 수행할 수 있도록 자료를 조직적으로 구분하여 표한한 것을 말한다.

즉 대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조를 의미한다.

 

자료구조의 선택 기준

작업의 효율성, 추상화, 재사용성을 증가시키기 위해 상황에 맞는 적절한 자료구조를 사용해야한다.

자료 처리를 효율적으로 하기위한 고려사항

 자료의 처리시간

 자료의 크기

 자료의 활용 빈도

 자료의 갱신 정도

 프로그램의 용이성

 

효율적으로 데이터를 관리하는 예

우편번호: 5자리 우편번호로 국가의 기초구역을 제공

학생관리: 학년, 반 번호를 학생에게 부여해 학생부를 관리

 

대표적인 자료구조

배열, 스택, 큐, 링크드 리스트, 해쉬 테이블, 힙 등

 

 

알고리즘이란

어떤 문제를 풀기 위한 절차 / 방법

어떤 문제에 대해, 특정한 입력을 넣으면 원하는 출력을 얻을 수 있도록 만드는 프로그래밍

 

알고리즘의 판단 기준

 처리 시간

 저장공간활용

 

 

어떠한 자료구조와 알고리즘을 쓰느냐에 따라, 성능의 차이가 심하기 때문에 자료구조와 알고리즘은 중요하다.

 

 

ps, 자료구조와 알고리즘은 어떤 언어로든 익힐 수 있다.

      이전에는 무조건 C또는 C++ 로만 작성하도록 하는경우가 많았지만 최근에는 언어로 인한 제약/평가가 없어짐

+ Recent posts