본문 바로가기

Programming/Algorithm

프로그램과 소프트웨어

반응형

소프트웨어 공학 : 소프트웨어를 어떻게 잘 개발할 것인가?

 

자료구조와 알고리즘

프로그램을 어떻게 잘 개발할 것인가?

 

 

문제가 있으면, 처리방식과 대상으로 나누는데, 방식은 알고리즘, 대상은 자료로 분류하여 통합하고 프로그램으로 만든다.

 

프로그램은 프로그래밍 언어로 만들어지는데, 컴파일하고 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