컴퓨터/data science

알고리즘 기본기 다지기1.데이터구조와 알고리즘

김크리 2021. 5. 11. 18:48

데이터구조와 알고리즘

모든 프로그램은 데이터구조와 알고리즘의 통합적 산물이다. 데이터구조를 고려하지 않은 알고리즘이나 알고리즘을 벗어나는 데이터 구조란 존재하지 않는다. Wiki에서 두 단어의 정의를 가져왔다.

데이터구조(자료구조)

컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미한다.
여러 종류의 자료구조가 있으며, 각각의 자료구조는 각자의 연산 및 목적에 맞추어져 있다.

단순 구조(정수, 실수, 문자, 문자열 등), 선형구조(리스트, 연결리스트, 스택, 큐, 덱), 비선형구조(트리, 그래프), 파일구조(순차파일, 색인파일, 직접파일) 등이 있다.

알고리즘

수학, 컴퓨터 과학, 언어학 등 어느 분야에서든 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것이다.

치킨 1마리 20,000원 사람 3명 Q. 1인 1닭일 경우, 계산해야할 치킨 값은? A. 3명 * 20,000원 = 60,000원 알고리즘 : 사람수 * 치킨가격 = 결과값 자료구조 : 사람수, 치킨가격, 결과값 => 정수 

의사코드(수도코드, pseudo code)

프로그램을 작성할때 동작하는 논리를 표현하기 위한 언어이다. C언어, C계열의 언어, Java, Python, golang 등 다양한 언어의 문법과 구조에 구애받지 않고 독자의 가독성을 높이는 언어이다.
실제로 손코딩테스트에서 자주 사용했었다. 하나이상의 프로그래밍 언어를 할 줄 안다면, 배우지 않아도 읽는데 무리는 없다.

실행시간

프로그래밍을 배우다보면, 필연적으로 O(1), O(n),...을 만나게 된다.
알고리즘의 효율성을 비교하기 위한 표기이다.
O(1)의 O는 o'notation 이며, 상세한 내용과 주로 보는 그래프는 점근표기법을 검색하면 확인할 수 있다.

복잡한 코드, 방대한 프로젝트 규모, 다양한 데이터구조 사용은 알고리즘의 복잡도를 높힌다.
즉, 효율이 낮아진다.
효율이 낮아지면, 낮은 효율의 알고리즘으로 정해진 결과물을 산출해야하고, 자원,노동력 등을 낭비하게 된다.

암기자료

데이터구조와알고리즘(암기자료).xlsx
0.01MB

참고

알고리즘 문제해결중심으로(2012) - 국형준