본문 바로가기

전체 글

정렬 1(버블, 선택, 삽입) 정렬 알고리즘 정렬 알고리즘이란 순서가 뒤섞인 데이터들을 오름차순 또는 내림차순으로 변경시켜주는 알고리즘이다. ex [2, 4, 3, 5, 1]의 데이터를 가졌을 때 오름차순 정렬 후 [1, 2, 3, 4, 5]로 데이터의 순서가 변경된다. 오늘 사용할 정렬들은 버블정렬, 선택정렬, 삽입정렬으로 시간복잡도 n의 2제곱을 가지는 알고리즘이지만 간단하고 직관적인 정렬방법들로 다음에 배울 정렬보다 기초가 되는 알고리즘이다. 버블정렬 버블 정렬은 첫 번째 자료와 두 번째 자료를, 두 번째 자료와 세 번째 자료를, 세 번째와 네 번째를, … 이런 식으로 (마지막-1)번째 자료와 마지막 자료를 비교하여 교환하면서 자료를 정렬하는 방식이다. [2, 4, 3, 5, 1] 데이터를 가질 때 우선 첫번 째 인덱스와 두번째.. 더보기
HASH TABLE HASH TABLE ? 해시 테이블은 키를 값에 매핑할 수 있는 구조인 연관 배열 추상 자료형(ADT)을 구현하는 자료구조이다. 특징으로는 대부분의 연산이 시간복잡도 O(1)을 가진다. 데이터 양에 관계 없이 빠른 성능을 기대할 수 있다. 파이썬에서는 해시테이블 대신 딕셔너리를 이용해 사용한다. HASH FUNTION ? 임의 크기 데이터를 고정 크기 값으로 매핑하는데 사용할 수 있는 함수 ABC -> A1 1234BC -> CB AB23D -> D5 위와 같이 화살표 왼쪽 값들은 각각 다른 크기를 지닌 문자열이지만 특정 함수를 통과하면 고정 크기 값으로 매핑된다. 여기서 화살표 역할을 하는 함수가 해시 함수이다. 더보기
항해 +14 이번주의 일 월요일부터 기본적인 자료구조인 stack, queue, hash, graph, dfs와 bfs를 공부했다. 사실 이 것들을 일주일만에 공부했다고 하기에는 일정이 너무 빡빡했지만 기본적인 구조와 구현을 공부했고, 그것들을 바탕으로 간단한 문제 몇개를 푸는 방법으로 공부했다. 반성할 일 이번주는 전체적으로 힘든 한 주였다. 개념 위주의 공부가 주를 이루었는데, 개념을 잡는 것부터 너무 어려웠다. 특히 graph에서 주어진 숫자들을 이용해 머릿속에서 그림을 그려나가는 과정이 아직 많이 힘들어 이해하는데 어려움이 많았다. 아직까지 개념에 대한 사용법이 어려워 더욱 많이 해야겠다는 생각을 하였고, 나의 무지함에 대해 알 수 있는 한 주였다. 더보기
STACK 과 QUEUE STACK ? 자료구조 중 하나로 후입선출(LIFO - Last In First Out)의 형태를 가진다. 먼저 들어간 자료가 아래에 쌓이게되고 나중에 들어오는 자료가 위에 쌓이게 되어 위에 있는 것들부터 빠져나가게 되는 형태를 띈다. 책을 쌓거나 접시를 쌓았을 때 위에서부터 빼는것이 가능한 것을 생각하면 쉽다. 파이썬에서는 list에서 스텍에 기본적인 기능을 사용가능해 list를 스텍처럼 사용하기도 한다. QUEUE ? 자료구조 중 하나로 선입선출(LIFO - Last In First Out)의 형태를 가진다. 먼저 들어간 자료가 앞쪽으로 가고 앞쪽에서 빠져나가는 형태를 띈다. 사람들이 맛집에서 줄을 서고, 먼저 줄 선 사람이 먼저 식당에 들어가는 것을 생각하면 쉽다. 파이썬에서는 deque로 que를.. 더보기
항해 +7 항해를 시작하고 한주가 정신없이 지났다. 많은 것을 배웠고 많은 것을 느낄 수 있는 한 주였다. 준비된 줄 알았지만 많이 부족했던 한주간을 회고해보자. 우선 시작과 동시에 우린 간단한 프로젝트를 하나 했다. 그 때는 우리 조는 다행히 웹에 대한 지식을 가진 팀원들이 많아 많은것을 배울 수 있었다. 우리 조는 크롤링한 자료를 홈페이지에서 소개 하는 형식의 홈페이지를 만들었고, 그렇기에 필요한 셀레니움과 bs4, 크롤링 한 데이터를 저장할 Mysql, 서버에서 사용하는 requests와 로그인에 필요한 jwt 등의 api를 사용해 웹을 구성했다. 우리조가 db를 Mysql로 선택한 이유는 다양한 테이블이 필요했고 각 테이블 마다 관계를 가지고 있었기 때문에 비관계형 데이터베이스 보단 관계형 데이터베이스가 좋.. 더보기