728x90
## 자료구조
자료구조는 컴퓨터에 저장되는 데이터가 사용자가 어떻게 편하고 효율적으로 사용할 수 있을지 정리하는 것이다. 모든 자료마다 적합한 구조가 있다.
책장에 정리된 책의 모습이 있다면 그 책은 장르의 코드 별, 제목의 순서 별로 정리가 되어 있을 것이다. 그 책 속 또한 목차를 통해 정리가 되어 있다.
혹은 지하철 노선도가 사람들이 직관적으로 알아보기 편리한 형태인 선형으로 정리되는 것 등 이러한 것들을 통틀어 자료구조라고 일컫는다.
자료의 컴퓨터 저장
모든 데이터는 0과 1로 저장된다.
컴퓨터에서 단순 자료는 프로그래밍 언어의 데이터 형식에 해당하는 정수, 실수, 문자, 문자열 등으로 나눈다
- 정수: 0, 100, -10 등 (소수점이 없는 음수, 0, 양수, Int또는 Integer)
- 실수: 0.1, 3.14, 4.5 등 (소수점 있는 형태, float)
- 문자: “A’, ‘1’, ‘가’ (한 문자, char로 표현)
- 문자열: “서울”, “A123”, “나” 등 (한 문자 이상, string으로 표현, 주로 큰따옴표로 묶음)
선형(linear)자료구조
- 항목들을 순서적으로 나열하여 저장
- 항목 접근 방법
- 리스트: 가장 자유로운 선형 자료 구조
- 스택, 큐, 덱: 항목의 접근이 맨 앞이나 맨 뒤로 제안됨
비선형(Nonlinear) 자료구조
- 항목들이 보다 복잡한 연결 관계를 가짐
- 트리: 회사의 조직도나 컴퓨터의 폴더와 같은 계층 구조
- 그래프: 가장 복잡한 연결 관계를 표현
알고리즘
알고리즘이란 컴퓨터가 문제를 풀기 위한 단계적인 절차를 의미한다.
하나의 일을 컴퓨터가 이해할 수 있도록 정밀하게 컴퓨터가 이해할 수 있는 언어로 기술한 것
프로그램 = 자료구조 + 알고리즘
알고리즘의 조건
- 입력: 0개 이상의 입력이 존재해야 함
- 출력: 1개 이상의 출력이 존재해야 함
- 명백성: 각 명령어의 의미는 모호하지 않고 명확해야 함
- 유한성: 한정된 수의 단계 후에는 반드시 종료되야 함
- 유효성: 각 명령어는 실행 가능한 연산이어야 함
알고리즘의 기술 방법
- 자연어
- 일반적인 언어를 사용해 설명하듯 표현
- 일반 사람이 이해하기 쉬우나 코드로 변경하기에는 어려움
- 어떤 알고리즘을 사용해야 할지 아이디어가 떠올즤 않을 때 사용하면 무난
- 흐름도
- 여러 종류의 상자와 상자를 이어 화살표를 이용해 명령
- 간단한 알고리즘은 쉽게 표현하나 복잡한 알고리즘은 어려움
- 유사코드
- 프로그래밍 언어보다 좀 더 인간의 언어에 가까움
- 프로그램 코드와 일반 언어의 중간 형태
- 프로그램 코드를 직접 코딩하는 것 보다 알고리즘을 좀더 명확하게 정립가능
- 특정언어
- 실제로 사용하는 언어로 작성
- 알고리즘 정확히 기술 가능
- 구현시 사항들이 알고리즘의 핵심적인 내용들의 이해를 방해
추상자료형
추상 자료형은 구체적이지 않은 데이터를 말한다.
- 데이터와 그 데이터에 대한 추상적인 연산들로 구성
- 데이터나 연산이 무엇(what)인가를 정의함
- 데이터나 연산을 어떻게(how) 구현할 것인지는 정의하지 않음
Bag의 추상 자료형
데이터: 중복된 항목을 허용하는 자료들의 저장소, 항목들은 특별한 순서가 없이 개별적으로 저장되지만 항목간 비교는 가능해야함
연산
- Bag(): 빈 가방을 생성함
- insert(e): 가방에 항목 e를 넣음
- remove(e): 가방에 e가 있는지 검사하여 있으면 이 항목을 꺼냄
- contians(e): e가 들어있으면 true, 없으면 false
- count(): 가방 안에 들어있는 요소의 개수를 반환
'IT개념 > 자료구조' 카테고리의 다른 글
[자료구조] 1-2. [순환 알고리즘과 시간복잡도] (0) | 2022.03.10 |
---|