소프트웨어 공학 : 소프트웨어를 어떻게 잘 개발할 것인가?
자료구조와 알고리즘
프로그램을 어떻게 잘 개발할 것인가?
문제가 있으면, 처리방식과 대상으로 나누는데, 방식은 알고리즘, 대상은 자료로 분류하여 통합하고 프로그램으로 만든다.
프로그램은 프로그래밍 언어로 만들어지는데, 컴파일하고 cpu로 계산하고 메모리에 저장한 뒤 해답을 낸다.
자료구조 : 데이터를 어떻게 저장할 것인가
알고리즘, : 데이터를 어떻게 처리할 것인가.
자료구조의 정의
문제해결을 위해 데이터 값들을 알고리즘들이 효율적으로 접근하여 처리할 수 있도록 체계적으로 조직하여 표현하는 것.
- 데이터란 무엇인가?
- 데이터는 어떤 방식으로 컴퓨터에 표현되는가?
- 데이터를 어떤 방식으로 처리하는 것이 보다 효율적인가?
알고리즘의 정의
특정 문제를 해결하기 위해 기술한 이련의 명련문과 절차로, 컴퓨터에 의한 자료처리 과정을 단계별로 기술한 것이다.
- 효율적이어야함
1. 적은 자원
2. 빠른 실행시간
- 적은 비용 유지 보수
1. 개발 비용
2. 유지 비용
공간 복잡도
저장 공간의 사용량을 말하는 함수.
- 프로그램, 변수, 고정적인 부분과 입력 데이터의 크기에 따라 변함.
- n에 대한 1차 함수
시간 복잡도
BIg-O
연산의 횟수를 대략적으로 표기한 것.
가장 영향을 많이 미치는 것을 빅오에 표기.
지수 함수의 경우는 매우 빨리 증가하기 때문에 어떤 알고리즘의 복잡도가 지수 함수일 경우에는 컴퓨터로 해결을 보장할 수 없다.
많은 양의 자료에 대해 알고리즘의 복잡도가 O (n log n)보다 크면 대개 실용적이지 못하다.
복잡도를 최대한 낮추는 방향으로 프로그램을 작성하도록 노력해야 한다.
'Programming > Algorithm' 카테고리의 다른 글
그리디 알고리즘 (0) | 2022.03.07 |
---|---|
디지털이란? (0) | 2022.03.03 |
브루트포스 알고리즘 = 전체 탐색 기법 (0) | 2022.02.25 |
ASCII(아스키 코드)란? (0) | 2022.02.21 |
알고리즘 개념 (0) | 2022.01.29 |