728x90
자료구조란?
- 용어: 자료구조, 데이터 구조, data structure
- 대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조를 의미
- 현실세계 정보를 어떻게 데이터로 변환해서 구조를 만드느냐
- 코드상에서 효율적으로 데이터를 처리하기 위해, 데이터 특성에 따라, 체계적으로 데이터를 구조화해 야 함
- 어떤 데이터 구조를 사용하느냐에 따라, 코드 효율이 달라짐
[효율적으로 데이터를 관리하는 예]
우편번호: 5자리 우편번호로 국가의 기초구역을 제공
학생 관리: 학년, 반, 번호를 학생에게 부여해서, 학생부를 관리
[대표적인 자료구조]
배열, 스택, 큐, 링크드 리스트, 해쉬 테이블, 힙 등
현실 세계의 가장 대표적인 데이터 구조? - 사전
알고리즘이란?
- 용어: 알고리즘, algorithm
- 어떤 문제를 풀기 위한 절차/방법
- 어떤 문제에 대해, 특정한 '입력'을 넣으면, 원하는 '출력'을 얻을 수 있도록 만드는 프로그래밍
- 현실 세계의 가장 대표적인 알고리즘? - 백종원 레시피
[알고리즘 연습 방법]
1. 연습장과 펜을 준비하자.
2. 알고리즘 문제를 읽고 분석한 후에,
3. 간단하게 테스트용으로 매우 간단한 경우부터 복잡한 경우 순서대로 생각해보면서, 연습장과 펜을 이용하여 알고리즘을 생각해본다.
4. 가능한 알고리즘이 보인다면, 구현할 알고리즘을 세부 항목으로 나누고, 문장으로 세부 항목을 나누어서 적어본다.
5. 코드화하기 위해, 데이터 구조 또는 사용할 변수를 정리하고,
6. 각 문장을 코드 레벨로 적는다.
7. 데이터 구조 또는 사용할 변수가 코드에 따라 어떻게 변하는지를 손으로 적으면서, 임의 데이터로 코드가 정상 동작하는지를 연습장과 펜으로 검증한다.
'두두의 알고리즘 > 공부' 카테고리의 다른 글
[자료구조] 트리(Tree) - 이진 탐색 트리 (0) | 2022.06.21 |
---|---|
[자료구조/알고리즘] 연결 리스트(Linked List), 더블 연결 리스트(Double Linked List), 트라이 구조(Trie) (0) | 2022.06.17 |
[알고리즘] BFS(넓이 우선 탐색) / DFS(깊이 우선 탐색) (0) | 2022.01.03 |
[알고리즘] 소수의 판별 / 투 포인터 / 구간 합 계산 / 순열과 조합 (0) | 2021.12.22 |
[복잡도] 시간 복잡도 / 공간 복잡도 (0) | 2021.12.21 |