Time Complexity(시간 복잡도)시간적 측면에서 알고리즘의 성능을 평가하는 지표알고리즘을 위해 필요한 연산의 횟수(얼마나 오래 걸리는지)Space Complexity(공간 복잡도)공간적 측면에서 알고리즘의 성능을 평가하는 지표알고리즘을 위해 필요한 메모리의 양
자료구조, 알고리즘 스터디를 하는데 있어, 또는 코딩테스트를 준비하는데 있어 익혀두면 좋을 파이썬 문법들에 대한 정리<앞으로 공부해 나가며 그때그때 추가할 예정입니다>파이썬의 리스트 자료형은 C++, Java 의 array와 같은 구조Linked List의 기능을
말 그대로, 어떠한 문제에 대해 단순 무식하게, 탐욕적으로 문제를 푸는 알고리즘탐욕적? (= 현재 상황에서 지금 당장 좋은 것만 고르는 방법)매 순간 가장 좋아 보이는 것을 선택하며, 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않음사전 지식 없이도 풀 수 있는
목차특정 조건을 만족하는 데이터를 찾아내는 과정검색이 빠르게 될수록 좋은 성능(낮은 시간 복잡도)다만, 검색만을 위한 자료구조가 아닌 이상 데이터의 추가, 삭제 등의 비용까지 종합적으로 고려하여 자료구조, 알고리즘을 선택해야 함키워드 : 무작위로 늘어놓은 데이터 집합에
후입 선출 방식의 데이터 구조 (LIFO)
코딩 테스트에서 구현(implementation)이란 '머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정'이다따라서, 모든 구현 문제 유형은 모든 범위의 코딩 테스트 문제 유형을 포함하는 의미로도 볼 수 있다. 따라서, 구현을 하나의 '유형'이다..라고 보기에는 애매한
: 어떤 함수에서 자신을 다시 호출하여 작업을 수행하는 방식의 함수팩토리얼의 2가지 조건0! = 1n > 0 이면 n! = n \* (n-1)두 정수값의 최대 공약수를 구하는 문제 -> 2개의 정수값을 각각 변의 길이로 갖는 직사각형이 있을때, 이 직사각형 안을 여러
정렬(sorting) : 문자 그대로, 항목값의 대소 관계에 따라 데이터 집합을 일정한 순서로 바꾸어 늘어놓는 작업정렬 알고리즘의 핵심은 교환, 선택, 삽입!안정 정렬 - 값이 같은 원소의 순서가 정렬한 후에도 유지불안정 정렬 - 정렬한 후에도 원래의 순서가 유지된다는
배열의 앞부분과 뒷부분의 두 그룹으로 나누어 각각 정렬한 후 병합하는 작업을 반복하는 알고리즘
그래프는 노드(Node, Vertex)와 간선(Edge)으로 표현할 수 있음.그래프 탐색이란 하나의 노드를 시작으로 다수의 노드를 방문하는 것을 말하며, 두 노드가 간선으로 연결되어 있다면 '두 노드는 인접하다'라고 표현함.그래프는 크게 2가지 방식으로 표현 가능함.인
문자열 검색이란 어떤 문자열 안에 다른 문자열이 포함되어 있는지 검사하고, 만약 포함되어 있다면 어디에 위치하는지 찾아내는 것을 의미.검색되는 쪽의 문자열을 text찾아내는 문자열을 pattern이라고 함. 선형 검새을 단순하게 확장한 알고리즘텍스트의 첫번째 문자에서
트리형 자료구조란 node와 edge를 통해 데이터 간의 계층관계를 표현하는 자료구조이다.루트(root) : 가장 위쪽에 있는 노드리프(leaf, terminal node, external node) : 가장 아래쪽의 있는 노드child : 어떤 노드와 가지가 연결되었
연산속도와 메모리 공간을 최대한 효율적으로 활용할수 있는 알고리즘을 작성해야 하며, 이를 통해 연산속도를 비약적으로 증가시킬 수 있는 방법이 다이나믹 프로그래밍(Dynamic Programming) or 동적계획법이다.다이나믹 프로그래밍으로 해결할 수 있는 대표적인 예
최단 경로 문제는 보통 그래프를 이용해 표현되며, 각 지점은 그래프 상 '노드', 지점 간 연결된 도로는 그래프의 '간선'으로 표현된다.그래프에서 여러개의 노드가 존재할 때, 특정 노드에서 출발하여 다른 노드로 가는 각각의 최단 경로를 구해주는 알고리즘이며, '음의 간