시간복잡도 2

[알고리즘] 01. 알고리즘 개요와 복잡도

같은 문제를 푸는 방법은 여러 가지고, 그중에는 빠른 것도 느린 것도 있다. 알고리즘은 "문제를 푸는 절차"를 다루고, 그 절차가 얼마나 효율적인지를 따지는 게 복잡도다. 오늘은 알고리즘이 갖춰야 할 조건부터 성능을 재는 빅오 표기법까지, 알고리즘 공부의 토대를 잡았다.1. 알고리즘의 정의와 요건알고리즘(Algorithm)어떤 문제를 해결하기 위한 일련의 순서(명령어의 나열)다. 가장 오래된 알고리즘으로는 기원전 300년경 유클리드의 최대공약수 알고리즘이 꼽힌다. 알고리즘이라 부르려면 다음 다섯 조건을 갖춰야 한다.요건설명입력(Input)0개 이상의 외부 입력출력(Output)1개 이상의 출력정확성주어진 입력에 대해 올바른 해를 냄유한성일정 시간 안에 반드시 종료수행성모든 명령이 실제로 실행 가능 입력은..

[자료구조] 01. 자료구조 개요와 분류

자료구조는 데이터를 아무렇게나 저장하는 방법이 아니라, 처리 목적에 맞게 데이터를 배치하고 관리하는 방식이다. 같은 데이터라도 어떤 구조에 넣느냐에 따라 탐색, 삽입, 삭제의 비용이 달라진다.이 과목에서는 어려운 용어를 앞세우기보다, 다음 흐름으로 보는 편이 이해하기 쉽다.이 구조가 어떤 상황에 필요한지 본다.C언어로 내부 동작을 직접 구현한다.C++에서는 같은 구조를 직접 구현하거나 STL로 어떻게 쓰는지 비교한다.1. 자료구조의 기본 분류분류관계대표 구조단순 구조하나의 값정수, 실수, 문자선형 구조1:1 관계배열, 연결 리스트, 스택, 큐비선형 구조1:N 또는 N:M 관계트리, 그래프파일 구조보조기억장치 저장순차 파일, 색인 파일 선형 구조는 데이터가 한 줄로 이어지는 구조다. 배열과 연결 리스트는 ..