목록 전체보기 45

배열 / Array

배열의 개념 배열(array)은 거의 모든 프로그래밍 언어에서 기본적으로 지원된다. 배열은 기본이 되는 중요한 자료형으로 많은 고급 자료구조들에서 사용된다. 배열은 주로 여러 개의 동일한 자료형의 데이터를 한꺼번에 만들 때 사용된다. int a1, a2, a3, a4, a5; // 6개의 정수형 변수를 각각 선언 int A[5]; // 5개의 정수형 변수를 선언 여러개의 변수를 사용하는 것은 각각을 다른 이름으로 접근해야 하므로 연산이나 자료의 교환 등에서 많은 불편함이 따른다. 이런 경우에 배열을 사용하면 편리하다. 배열은 동일한 이름을 사용하고 인덱스(index) 번호로 각 항목을 접근할 수 있다. 특히 반복문을 활용하여 코드의 길이를 크게 줄일 수 있다. 배열의 가장 기본적인 특징은 쌍의 집합이라는..

추상 자료형

소프트웨어의 개발과 유지보수에 있어서 가장 중요한 문제는 "어떻게 소프트웨어 시스템의 복잡성을 관리할 것인가"이다. 이러한 복잡성에 대처하기 위하 새로운 아이디어들이 등장하였고 이들을 구체화한 프로그래밍 방법론과 언어들이 개발되었다. 이러한 방법론이나 언어의 핵심이 추상화(abstruction)이다. 추상화란 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념이나 기능을 간추려 내는 것을 말한다. 즉, 어떤 시스템의 간략화 된 기술 또는 명세로서 시스템의 정말 핵심적인 구조나 동작에만 집중하는 것이다. 추상 자료형(Abstruct Data Type: ADT)은 추상화한 자료형, 즉 추상적으로 정의한 자료형을 의미한다. 구체적으로는 자료의 집합과 자료에 가해지는 연산들의 집합에 대한 수학적 명세이다. 이..

알고리즘의 성능 분석(feat. 시간복잡도)

프로그램 작성 시에 계산시간을 줄이고 메모리를 효과적으로 사용하기 위해 고민해야한다. 첫 번째 이유는 프로그램의 규모가 이전에 비해서는 엄청나게 커지고 있기 때문이다. 처리해야 할 자료의 양이 많아질 수록 알고리즘의 효율성이 더욱 중요해진다. 두 번째 이유는 사용자들이 여전히 빠른 프로그램을 선호하기 때문이다. 효율적인 알고리즘이란 전체 실행 시간이 짧으면서 메모리와 같은 컴퓨터의 자원들을 적게 사용하는 알고리즘이다. 일반저으로 실행 시간이 메모리 공간보다 더 중요하게 생각되기 때문에 알고리즘의 실행 시간을 효율적인 알고리즘의 기준으로 삼는다. 공간복잡도에 대해서는 많이 기재하지 않겠다. 이유는 과학기술의 발달로 인해 일반적으로 메모리의 용량이 상당히 증가했기 때문이다. 물론 IOT(사물인터넷)이나 한정..