algorithms

Sorting problem key를 기준으로 오름차순 정렬한 예시입니다. Sample sort client 1, 2 숫자, 문자(알파벳)를 기준으로 정렬한 예시입니다. Sample sort client 3 directory를 기준으로 정렬한 예시입니다. Callbacks 데이터 타입에 대한 정보가 주어져있지 않은 상황에서도 정렬을 수행하기 위해 callback 메커니즘이 사용됩니다. comparetTo( ) 메서드를 통해 두 아이템의 타입을 비교할 수 있습니다. Java에서는 인터페이스라는 특정 메서드를 사용합니다. Callbacks: roadmap 객체 형식을 지닌 배열이 인자로 전달됩니다. Java의 comparable interface 같은 것을 generic이라고 합니다. compareTo( )..
Java collections library java의 collections라는 라이브러리엔 유용한 툴들이 많이 들어있습니다. python에도 같은 이름의 라이브러리가 있어서 코딩테스트 문제를 풀이할 때 종종 사용됩니다. War story (from Assignment 1) 과제 1이었던 percolation 문제를 예로 들어서 라이브러리 사용에 충분한 이해가 전제되어야 함을 강조하고 있습니다. n by n 사이즈의 문제를 다룰 때, 이를 배열로 풀이한 사람은 N^2 만큼의 시간이 소요됩니다. 반면 이를 linked list로 풀이하면 N^4의 시간, 즉 제곱만큼의 시간이 소요됩니다. 이는 linked list가 탐색을 수행할 때 배열의 길이 n에 비례하는 시간 복잡도를 가지기 때문입니다. 즉, 상수(c..
Iteration 실제로 어떤 작업이 이루어질 때 그 내부 구조에 대해서 사용자는 굳이 알 필요가 없습니다. 그래서 사용될 수 있는 Java의 좋은 기능 중 하나가 iterator라고 합니다. python에서도 iterable 객체에서 값을 하나씩 꺼낼 수 있는 iterator가 존재합니다. Stack iterator: linked-list / array implementation itertator의 구조를 자세히 살펴보고 있습니다. 호출이 될 때마다 current에 저장된 값이 다음 값으로 넘어가는 것을 알 수 있습니다. Bag API 강의가 너무 오래 전이라 그래서 어느 정도의 괴리가 존재하는지 모르겠네요.. python의 set 자료형을 말하는 것 같습니다. 이때 당시의 자바는 이걸 Bag이라는 A..
Parameterized stack 이 내용도 사실 파이썬과는 큰 차이가 있습니다. Java에서는 generic이라는 것이지만, 파이썬에서는 type hint를 지원하기 때문입니다. run time error를 지양하고 compile 단계에서 에러가 발생하도록 하는 장치라고 볼 수 있습니다. 어떤 프로그램이 곧 product라고 생각하면, 고객에게 전달된 뒤에 문제가 발생하는 것보다 내 손에 있을 때 발생하는 것이 낫겠죠. 그래서 사전에 정해진 일반적인 형태 등을 정해놓은 것이 generic, 그리고 파이썬에서는 type hint라고 이해하면 될 것 같습니다. Generic stack: linked-list implementation generic type name을 사용해서 기존의 코드를 개선한 예시입..
Queue API Queue 자료구조는 Stack과 정반대의 특성을 지닙니다. 대표적으로 FIFO, 들어온 순서대로 나가는 특성을 지니고 있죠. Queue: linked-list representation 파이썬에서는 포인터라는 개념이 없기 때문에 더욱 어색하지만 개념은 간단한 것 같습니다. 아이템을 추가할 때는 맨 앞에, 제거할 때는 맨 뒤에서 하다보니 가리키는 주소값이 두 군데여야 한다는 것입니다. Queue dequeue: linked-list implementation Queue: linked-list implementation in Java 굳이 파이썬으로 이런 코드를 짤 필요는 없는 것 같습니다.. 단순히 deque를 불러와서 추가할 줄만 알면 충분합니다. 참고로 popleft를 쓰면 배열의 ..
Types of analyses 알고리즘을 분석하기 위해서는 크게 세 가지로 나눠서 보는 것 같습니다. Best case : 처리하기 가장 좋은 형태의 input이 주어진 경우 Worst case : 처리하기 가장 어려운 형태의 input이 주어진 경우 Average case : random한 input이 주어지는 경우 Theory of algorithms 일반적으로는 주어진 문제를 해결하기 위한 최적의 알고리즘을 찾기 위해서, 우선 어려운 문제를 기준으로 접근해야 합니다. 즉, 최악의 상황을 가정하고 이를 개선하는 방식으로 접근하는 것이죠. Commonly-used notations in the theory of algorithms 일반적으로 우리에게 잘 알려진 것은 중간의 빅오 표기법이지만 세 개를 ..
chanmuzi
'algorithms' 태그의 글 목록 (3 Page)