0%

버블정렬(Bubble Sort)

버블정렬이란?

인접한 두 항목의 값을 비교해서 일정한 기준을 만족하면 서로의 값을 교환하여 정렬하는 방식입니다. 예를 들어, 오름차순 정렬은 두 항목의 값을 비교하여 앞쪽 값이 더 크면 두 항목의 값을 교환하고 내림차순 정렬은 두 항목의 값을 비교하여 앞쪽 값이 더 작으면 두 항목의 값을 교환하는 방식입니다. 다른 정렬 알고리즘에 비해 속도가 상당히 느린 편이지만, 코드가 단순하여 사용도가 높습니다. 버블정렬은 최악의 경우 O(n^2)의 시간복잡도가 걸립니다.
아래 그림을 참고하시면 조금 더 이해에 도움이 되실겁니다!

image

Read more »

이진 트리

어떤 트리든 이진 트리로 표현이 가능하며, 구현이 단순한 편이라 가장 많이 쓰이는 트리입니다. 이진 트리의 가장 큰 특징은 최대 차수가 2입니다. 이진 트리에서는 왼쪽 서브트리와 오른쪽 서브트리를 구분하며 0개의 노드를 가질 수 있습니다.

이진 트리 순회

  • 전위 순회(preorder traverse): 뿌리(root)를 먼저 방문
  • 중위 순회(inorder traverse): 왼쪽 하위 트리를 방문 후 뿌리(root)를 방문
  • 후위 순회(postorder traverse): 하위 트리 모두 방문 후 뿌리(root)를 방문
  • 층별 순회(level order traverse): 위 쪽 node들부터 아래 방향으로 차레로 방문
Read more »

트리(Tree)

리스트나 스택 또는 큐로 가게도,조직도를 구현할 수 없습니다. 선형 자료구조로 계층형 구조를 표현하기 어렵습니다. 이처럼 계층형 구조를 가진 문제를 해결하기 위한 조료구조 형태가 트리입니다.

  • 1개 이상의 유한한 개수의 노드의 집합
  • 루트 노드와 0개 이상의 겹치지 않는 하위 나무 구조들의 집합으로 이루어짐

image-20200630233119811

Read more »

Print

오늘은 간단하게 python의 print문에 대해서 정리하려고 합니다. print문에서 괄호안의 문자열은 ""쌍따옴표 또는 ''홑따옴표를 사용합니다. 사용하실 땐 홑따옴표 쌍따옴표 원하시는걸 사용하시되 짝만 맞도록 사용하시면 됩니다.

image

Read more »

삽입 정렬(Insertion Sort)

삽입 정렬은 현재 위치에서, 그 이하의 배열들을 비교하여 자신이 들어갈 위치를 찾아, 그 위치에 삽입하는 배열 알고리즘입니다.

기본 로직은 아래와 같습니다.

  1. 삽입 정렬은 두 번째 인덱스부터 시작합니다. 현재 인덱스는 별도의 변수에 저장해주고 비교 인덱스를 현재 인덱스 -1로 잡습니다.
  2. 별도로 저장해 둔 삽입을 위한 변수와 비교 인덱스의 배열 값을 비교합니다.
  3. 삽입 변수의 값이 더 작으면 현재 인덱스로 비교 인덱스의 값을 저장해주고, 비교 인덱스를 -1하여 비교를 반복합니다.
  4. 만약 삽입 변수가 더 크면, 비교 인덱스 +1에 삽입 변수를 저장합니다.
Read more »

선택정렬

선택 정렬은 이름에 맞게 현재 위치에 들어갈 값을 찾아 정렬하는 배열입니다. 현재 위치에 저장 될 값의 크기가 작냐, 크냐에 따라 최소 선택 정렬과 최대 선택 정렬로 구분 할 수 있습니다.최소 선택 정렬은 오름차순으로 정렬될 것이고, 최대 선택 정렬은 내림차순으로 정렬될 것입니다.

Read more »

식별연산자

두 개체의 메모리 위치를 비교하겠습니다.

a = 20, b = 20 이라고 가정하겠습니다.

Operator Description Example
is 개체메모리 위치나 값이 같다면 참 (a is b) = True
is not 개체메모리 위치나 값이 같지 않다면 참 (a is not b) = False

맴버연산자

a = 10, b = 10, list = [1, 2, 3, 4, 5]라고 가정하겠습니다.

Operator Description Example
in list내에 포함되어 있으면 참 (a in list) = False
not in list내에 포함되어 있지 않으면 참 (b not in list) = True

논리연산자

a = True, b = False이라고 가정하겠습니다.

Operator Description Example
and 논리 AND 연산. 둘 다 참일때만 참 (a and b) = False
or 논리 OR 연산.둘 중 하나만 참이여도 참 (a or b) = True
not 논리 NOT 연산. 논리 상태를 반전 not(a and b) = True

비트연산자

a = 60, b = 13이라고 가정하겠습니다.

a = 0011 1100

b = 0000 1101

Operator Description Example
& AND연산. 둘 다 참일때만 만족 (a & b) = 12 > 0000 1100
| OR연산. 둘 중 하나만 참이여도 만족 (a | b) = 61 > 0011 1101
^ XOR연산. 둘 중 하나만 참일 때 만족 (a ^ b) = 49 > 0011 0001
~ 보수 연산 (~a) = -61 > 1100 0011
<< 왼쪽 시프트 연산자, 변수의 값을 왼쪽으로 지정된 비트 수 만큼 이동 a << 2 = 240 > 1111 0000
>> 오른쪽 시프트 연산자. 변수의 값을 오른쪽으로 지정된 비트 수 만큼 이동 a >> 2 = 15 > 0000 1111