알고리즘에서 시간 복잡도는 주어진 문제를 해결하기 위한 연산 횟수를 말한다. 일반적으로 파이썬 프로그램에서는 2000만 번 ~ 1억 번의 연산을 1초의 수행 시간으로 예측할 수 있다고 한다. 빅-오메가: 최선일 때의 연산 횟수를 나타낸 표기법이다. 빅-세타: 보통일 때

파이썬에서는 리스트가 배열의 특성도 함께 내포하고 있어 크게 구분하여 사용하지는 않는다. 배열은 메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조이다. 배열의 값은 인덱스를 통해 참조할 수 있으며, 선언한 자료형의 값만 저장할 수 있다. 특징인덱스를 사용하여 값에

스택은 삽입과 삭제 연산이 후입선출로 이루어지는 자료구조이다. 후입선출은 삽입과 삭제가 한 쪽에서만 일어나는 특징이 있다. 위치top: 삽입과 삭제가 일어나는 위치를 뜻한다.연산(리스트 이름이 s일 때)s.append(data): top 위치에 새로운 데이터를 삽입하는

구간 합은 합 배열을 이용하여 시간 복잡도를 더 줄이기 위해 사용하는 특수한 목적의 알고리즘이다. 합 배열 S는 배열 A의 값을 빠르게 계산하기 위해 미리 부분합을 저장한 배열이다. 즉, 배열 S의 각 원소는 배열 A의 0번째부터 해당 인덱스까지의 누적합을 나타낸다.합

버블 정렬은 두 인접한 데이터의 크기를 비교해 정렬하는 방법이다. 시간 복잡도는 O(n²)으로 다른 정렬 알고리즘보다 속도가 느린 편이다. 아래와 같이 루프를 돌면서 인접한 데이터 간의 swap 연산으로 정렬한다. 루프를 한 번 돌때 n의 시간 복잡도가 든다. 루프를

깊이 우선 탐색은 그래프 완전 탐색 기법 중 하나이다. 깊이 우선 탐색은 그래프의 시작 노드에서 출발하여 탐색할 한 쪽 분기를 정하여 최대 깊이까지 탐색을 마친 후 다른 쪽 분기로 이동하여 다시 탐색을 수행하는 알고리즘이다. 깊이 우선 탐색은 실제 구현 시 재귀 함수를

소수는 1과 자기 자신 외에 약수가 존재하지 않는 수를 말한다. 소수를 구하는 대표적인 판별법으로는 에라토스테네스의 체가 있다. 에라토스테네스의 체의 원리를 이용하면 시간 복잡도는 최적화의 정도에 따라 다르겠지만, 일반적으로 O(nlog(logn) 이다. 그 이유는 배

트리는 노드와 에지로 연결된 그래프의 특수한 형태이다.순환 구조를 지니고 있지 않고, 1개의 루트 노드가 존재한다. 루트 노드를 제외한 노드는 단 1개의 부모 노드를 갖는다. 트리의 부분 트리 역시 트리의 모든 특징을 따른다. 트리에서 임의의 두 노드를 이어주는 경로는
조합은 n개의 숫자에서 r개를 뽑는 경우의 수를 뜻한다. 조합과 비교되는 순열은 n개의 숫자 중 r개를 뽑는 순서를 고려해 나열한 경우의 수를 이야기 한다. 즉, 조합에서는 데이터 1, 2, 3과 3, 2, 1을 같은 경우로 판단하고, 순열은 다른 경우로 판단한다. 특
카운팅 정렬은 정수형 데이터의 개수를 제어 정렬하는 알고리즘이다. 데이터의 최댓값(K)이 크지 않은 경우, O(N+K) 시간 복잡도로 매우 빠르게 정렬할 수 있다. 특징O(N+K)의 선형 시간 복잡도를 갖는다. K가 작을 때는 퀵정렬(O(N log N))보다 빠르다.동

자료구조는 데이터를 효율적으로 저장하고 관리할 수 있는 방식이나 구조를 말한다. 데이터가 어떻게 저장되느냐에 따라 처리 성능이 달라지므로, 다양한 문제를 해결하기 위해 여러 종류의 자료구조가 사용된다. 자료구조는 두 가지 주요 요소에 영향을 미친다. 시간 복잡도데이터에
운영체제(OS, Operating Sysetm)란 하드웨어 위에 설치되어 하드웨어 계층과 다른 소프트웨어 계층을 연결하는 소프트웨어 계층이다.컴퓨터 시스템의 자원을 관리하고, 사용자가 컴퓨터를 사용할 수 있는 환경을 제공하는 역할을 수행한다. CPU, 메모리 같은 컴퓨
RESTful API가 무엇인지를 알기 위해서는 API에 대해 먼저 알아야 한다. API란 Application Programmig Interface의 약자로 여러 프로그램이나 시스템이 서로 소통할 수 있도록 도와주는 일종의 규격이나 규칙을 말한다. 예를 들어 내가 스
오늘은 통신 패턴에 대해서 알아보자. 통신 패턴은 크게 요청/응답, 발행/구독, 단방향, 요청/확인응답, 스트림으로 나누어 볼 수 있다. 클라이언트가 서버에 요청을 보내고 서버가 응답을 반환하는 방식이다. 클라이언트와 서버는 요청 후 응답을 받을 때까지 대기하며 동기적