알고리즘 기본기 다지기1.데이터구조와 알고리즘
데이터구조와 알고리즘
모든 프로그램은 데이터구조와 알고리즘의 통합적 산물이다. 데이터구조를 고려하지 않은 알고리즘이나 알고리즘을 벗어나는 데이터 구조란 존재하지 않는다. 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 이며, 상세한 내용과 주로 보는 그래프는 점근표기법을 검색하면 확인할 수 있다.
복잡한 코드, 방대한 프로젝트 규모, 다양한 데이터구조 사용은 알고리즘의 복잡도를 높힌다.
즉, 효율이 낮아진다.
효율이 낮아지면, 낮은 효율의 알고리즘으로 정해진 결과물을 산출해야하고, 자원,노동력 등을 낭비하게 된다.
암기자료
참고
알고리즘 문제해결중심으로(2012) - 국형준