본문 바로가기

알고리즘9

algorithms/배열(array) 배열이란, 데이터 하나하나를 인덱스(index)에 대응시킨 데이터 구조다. 이 때, 배열에 저장되는 데이터들은 동일한 종류의 데이터들이 저장된다. 인덱스에 따라 데이터가 순차적으로 나열된다는 특징이 있으며, 인덱스를 이용해 곧바로 데이터에 접근할 수 있다. 순서가 중요한 데이터를 배열에 담는 것이 유용할 것이다. 순서가 중요한 데이터의 대표는 string이다. ‘computer’라는 단어를 배열에 저장한다고 할 때, c-o-m-p-u-t-e-r의 순서로 저장되는 것이 옳다. 이럴 경우 배열이 적합하다. 각각의 배열 요소에는 인덱스가 붙는데, c는 인덱스 0, o는 인덱스 1과 같은 식으로 인덱스가 부여된다. 파이썬에서는 list가 배열로서 기능한다. 파이썬의 list는 배열 자료구조 그 자체라고 보기는 .. 2019. 12. 30.
algorithms/자료구조 & 알고리즘에 대하여 자료구조? 자료구조=데이터 구조=data structure 자료구조란, 현실 세계의 정보를 디지털 형태(데이터)로 저장 및 관리할 수 있게 하는 데이터 구조다. 특히, 적절한 자료구조를 이용해 대량의 데이터를 효율적으로 관리할 수 있다. 효율적인 데이터 처리를 위해서는 데이터가 가진 특성이 무엇이냐에 따라 어떤 데이터 구조를 사용할 것인지가 결정된다. 적절한 데이터 구조를 사용할수록 효율적인 코드가 된다. 데이터를 관리하는 대표적인 예로는 백과사전, 그리고 주민등록번호가 있다. 백과사전은 알파벳의 순서대로 지식들이 나열된 커다란 자료구조라고 볼 수 있다. 또한, 대한민국 국적을 가진 모든 성인남녀의 신원이 명확히 구분하기 위해 도입된 주민등록제도에 따라, 한국인은 모두 앞 6자리와 함께 추가적으로 7자리.. 2019. 12. 30.
algorithms/알고리즘이란? 알고리즘이란, 컴퓨터가 어떤 문제를 해결하기 위한 자세한 방법이다. 따라서 컴퓨터가 이해할 수 있는 방식으로 정리되어 있는 해결 방법으로 기술되어야 한다. 같은 문제를 해결하기 위해서도 다양한 알고리즘이 존재할 수 있다. 그렇다면 다양한 알고리즘 중에 좋은 알고리즘이란 무엇일까? 좋은 알고리즘은 두 가지 조건을 충족시켜야 한다. 문제를 해결하는 것 문제를 더 잘 해결하는 것 알고리즘 프로그래밍 언어를 이용하여 구현된다. 그래서 프로그래밍과 알고리즘은 뗄래야 뗄 수 없는 관계다. 유능한 개발자들의 대부분은 알고리즘적 사고력을 갖추고 있고, 대표적인 알고리즘 정도는 꿰고 있다. 개발자가 되면 이런 식의 대화가 오간다: "여기서는 BFS 알고리즘이 적합하다." "Divide and Conquer 방식으로 접근.. 2019. 12. 30.
알고리즘 공부법 알고리즘 공부법 알고리즘에 대한 기본적인 이해와 지식을 알고 있어야 한다. 알고리즘 분류에 따라 문제가 있는 이 페이지를 활용한다. 푼 사람 수가 많고, 문제 정답률이 높은 순서대로 풀어보면서 본인이 확실하게 그 알고리즘을 제대로 이해했는지 테스트한다. 어떤 알고리즘을 사용해야 할 지 알고 문제를 풀어나가면 된다. 분류되지 않은 다양한 문제를 통해, 내 스스로 알고리즘을 구현하여 해결한다. 어떤 문제가 주어졌을 때에 그 문제가 가진 고유한 특성과 조건들을 활용하여 본인이 직접 알고리즘을 고안해본다. 예를 들어 문제에서 주어진 상황을 직접 그래프로 모델링 한 결과, 최단거리를 구해야하고 따라서 Dijkstra 알고리즘을 사용하면 되겠다라고 생각할 수 있겠다. 수행시간을 더 줄이기 위해서 힙을 써야겠다는 생.. 2019. 12. 26.