티스토리 뷰
자료구조?
자료구조에서는 데이터를 표현하고 저장하는 방법에 대해서 설명한다.
'데이터의 저장'을 담당하는 것이 바로 자료구조이다.
넓은 의미에서 int형 변수, 구조체의 정의, 배열, 파일의 구조 등이 자료구조에 포함이 된다.
데이터를 저장할 때 리스트로도 가능하고 트리로도 가능하다면 어떠한 것이 더 효율적일 것인가?
-> 각각의 특성을 정확히 이해해야 한다.
자료구조가 '데이터의 표현 및 저장방법'을 뜻한다면, 알고리즘은 이렇듯 표현 및 저장된 데이터를 대상으로 하는 '문제의 해결 방법'을 뜻한다.
자료구조가 결정되어야 그에 따른 효율적인 알고리즘을 결정할 수 있다.
: 자료구조와 알고리즘은 다른 과목임에도 불구하고 매우 많은 연관성을 지니고 있다.
잘 동작하고 좋은 성능을 보이기 위해서는 자료구조와 알고리즘을 분석하고 평가할 줄 알아야 한다.
속도에 해당하는 알고리즘의 수행시간 분석결과 = 시간 복잡도(Time Complexity)
메모리 사용량에 대한 분석결과 = 공간 복잡도(Space Complexity)
메모리를 적게 쓰고 속도도 빨라야 최적의 알고리즘!
알고리즘의 수행속도 평가 방법
연산의 횟수를 세고, 처리해야 할 데이터의 수 n에 대한 연산횟수의 함수 T(n)을 구성한다.
동일한 기능을 제공하는 서로 다른 두 알고리즘의 성능을 비교했을 때,
데이터의 수가 적을 때 선택해야 되는 알고리즘과 데이터의 수가 많을 때 선택해야 하는 알고리즘이 다를 수 있다.
데이터의 수가 적은 경우에는 속도 차이가 별로 나지 않을 수도 있으니 더 중요한 것은 데이터의 수가 많아짐에 따른 연산횟수의 증가 정도이다.
알고리즘 분야에는 정답이 없는 것이 아니라 상황에 맞게 답을 내려야 한다.
구현보다 중요한 것은 종합적으로 사고하고 판단하는 능력이다!
참고자료
열혈 자료구조
- Total
- Today
- Yesterday
- 자료구조
- dynamic programming
- leetcode
- 비트
- scanf
- 기본 자료형
- 이것이코딩테스트다
- 열혈 자료구조
- unsigned
- 이코테
- 다익스트라 알고리즘
- 파이썬
- 비트연산자
- 에러
- ascii
- 프로그래머스
- sizeof
- 동적 계획법
- 파이썬 나머지
- Python
- 파이썬 몫
- 코딩테스트
- C
- C언어
- dp
- 해시
- 내장 함수
- dijkstra algorithm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |