before 2020/알고리즘 2

Stack 알고리즘

스택 알고리즘을 구현해 보자. 우선 스택에 대해 간단히 알아보자면, 어떤 데이터를 사용할 때 데이터를 저장해놓고 쓰는 일이 생기기 마련이다. 근데 이 데이터를 저장한 반대 순서로 꺼내어 써야할 경우가 있다. 예를 들어 브라우저의 뒤로가기 기능같은거 말이다. 제일 마지막에 탐색했던 페이지부터 제일 처음 탐색했던 페이지 순으로, 즉 저장된 역순으로 데이터를 뽑아서 쓰고 있다. 그냥 아무대나 데이터를 순서없이 막 집어넣고 일일이 찾아서 뽑아내도 되지만 어느게 제일 최근것인지 오래된것인지 찾으려면 시간이 많이 걸리지 않는가? 이때 우리는 스택을 사용할 수 있다. 스택자료구조는 데이터를 순서대로 저장한다. 그리고 데이터를 불러 쓸때는 저장 순서의 역순으로 사용할 수 있게 해준다. 우리는 그냥 불러 쓰기만 하면 그..

빅오표기법/빅오분석법(Big O Notation)

빅오표기법은 간단하게 알고리즘의 성능을 평가할 수 있는 방법이다. 벤치마킹을 통해 실제적인 알고리즘 분석도 가능하지만 어떻게 모든 알고리즘을 전부 테스트하고 사용하겠는가.. 그냥 대충 '각'을 잡아본 후에 사용하는 것이 효율적이다. 이러한 알고리즘 테스트를 위한 여러가지 방법이 있다. 3가지 정도가 있는데 Ω,θ,O 이렇게 세가지이다. - O표기법은 알고리즘의 최악의 성능을 표시해준다. - Ω표기법은 알고리즘의 최고의 성능을 표시해준다. - θ표기법은 정확한 알고리즘의 성능을 표시해준다. 그럼에도 불구하고 O표기법을 많이 사용하는 이유는 '아무리 최악의 상황이라도 이정도의 성능을 보장할 수 있다'라는 것을 보여주기 위해 O표기법을 사용하는 것이다. 괜히 Ω표기법으로 알고리즘을 평가해서 최악을 성능을 내는..