본문 바로가기

파이썬

Posts/Algorithm [누구나 자료구조 알고리즘] python 퀵정렬 💡 Goal - 퀵정렬 알고리즘을 이해한다. - 퀵정렬 알고리즘을 파이썬으로 구현한다. - 퀵정렬 알고리즘 특징을 2가지 이상 말하기. 개념 다른 원소들과 비교만으로 정렬을 수행하는 비교 정렬 분할 정복 알고리즘중 하나 분할정복이란 → 문제를 2개로 분리하고 해결한 다음 결과를 다시 합치는 전략 매우 빠른 속도를 자랑하며 python의 sort가 퀵정렬로 구현됌 리스트에 pivot을 지정 후 pivot을 기준으로 작은 요소는 왼쪽, 큰 요소는 오른쪽으로 옮기는 전략 분할 : pivot을 기준으로 2개(좌, 우) 배열로 분할한다 정복 : 분할한 배열들의 크기가 분할이 불가능할때까지 순환 호출 (반복 호출) 결합 : 분할이 불가능할때까지 정렬된 배열들을 하나로 합친다. 순서(오름차순 기준) pivot을 임의.. 2021. 12. 12. 00:19
Posts/Algorithm [boj] 회의실 배정 - 1931 (파이썬) 1. 문제 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다. 2. 입력 첫줄 입력 값: N(1 ≤ N ≤ 100,000) 둘째줄 입력 값: N+1까지 회의 정보 시작 시간과 끝나는 시간은 231-1보다 작거나 같은 자연수 또는 0 3. 출력 첫째 줄에 최대 사용할 수 있는 회의의 최대 개수를 출력 .. 2021. 12. 11. 21:01
Posts/Algorithm [누구나 자료구조 알고리즘] Python 삽입정렬 💡 Goal - 삽입정렬 알고리즘을 이해한다. - 삽입정렬 알고리즘을 파이썬으로 구현한다. - 삽입정렬 알고리즘 특징을 2가지 이상 말하기. 개념 데이터를 앞에서 하나씩 확인 후 특정 조건에 부합하는 위치(좌 or 우)에 삽입 왼쪽은 이미 정렬되어 있는 가정으로 접근 선택정렬에 비해 실행시간 측면으로 조금 효율적 처음 key값은 두번째(index 1)부터 시작 비교, 시프트(이동), 삽입등이 사용되는 알고리즘 순서(오름차순 기준) 1번 인덱스부터 시작하는 반복문을 만든다. 임시로 1번 인덱스값과 데이터를 가지고 ← 방향으로 반복 비교한다. 왼쪽은 이미 정렬되어 있다는 가정 왼쪽 값이 크다면 큰 값을 현재 position으로 변경해주고 position을 -1 해준다. (왼쪽 순회) 2,3단계가 끝나면 현재.. 2021. 12. 11. 20:43
Posts/CS [Python 자료구조] 해시테이블 (Hash Table) 해시 테이블 CodeIt 자료구조 수업을 정리한 내용입니다. 1. Key-Value 데이터 110호: "제임스" 하나의 key와 그 key에 해당하는 value를 말합니다. 하나의 key에는 하나의 value만 존재 2. Direct Access Table 배열 인덱스를 키로 이용해서 데이터를 저장하거나 가져오는 것을 Direct Access Table이라 말합니다. 하지만 위에 사진에서 볼 수 있듯이 사용하는 데이터의 갯수는 5개이지만 인덱스의 가장 큰 값으로 인해 총 길이가 942개중 937개가 낭비되는 현상이 발생합니다. 3. Hash Table 해시 함수와 배열을 함께 사용하는 자료구조를 말합니다. 원하는 크기의 배열을 생성 해시 함수를 이용해 저장할 key:value 데이터의 키를 배열 inde.. 2021. 12. 7. 00:19
Posts/CS [Python 자료구조] 링크드 리스트 (Linked List) 링크드 리스트란? CodeIt 자료구조 수업을 정리한 내용입니다. 링크드 리스트 배열이나 동적 배열처럼 데이터를 순서대로 저장 동적 배열처럼 요소를 계속 추가 가능 노드 노드 객체는 2가지의 속성을 가지고 있습니다. data와 next로 이루어져 있는데 data는 저장하고자 하는 정보를 말하며, next는 다음 노드의 레퍼런스를 말합니다. 첫번째 노드 객체는 head 노드라고 하며 head 노드의 메모리주소만 알고 있으면 연결되어 있는 모든 노드를 접근할 수 있습니다. (실제 메모리에선 여기저기 흝어져있음) class Node: def __init__(self, data): # 인스턴스 변수들의 초기값 setting self.data = data # 노드 저장 데이터 self.next = None # 다.. 2021. 11. 25. 23:55
Posts/CS [Python 자료구조] 배열 (Array) 배열이란? CodeIt 자료구조 수업을 정리한 내용입니다. 배열 파이썬은 C를 기반으로 만들어졌고 C의 배열을 이용해서 만들어진게 파이썬 리스트 C 배열은 크기 고정, 같은 데이터 타입만 가능 C 배열의 경우 데이터가 메모리에 연속적으로 저장 파이썬은 데이터가 연속적일수도 있고 아닌 아예 다른 곳에 저장될 수도 있음 파이썬의 경우 메모리에 데이터의 주소값을 저장 아무리 큰 값이어도 가리키기만 하는 역할이므로 C배열과 다르게 다양한 값 저장 가능 item_list = [10, "데이터", True, -4] 배열 인덱스 접근 찾고자 하는 위치의 주소(index)를 알고 있기에 시간복잡도는 O(1) 입니다. 배열 탐색 배열의 탐색은 특정 조건을 만족하는 값을 찾는 것을 말합니다. 예를 들어 하나의 배열에 특정.. 2021. 11. 23. 00:00
Posts/Django Django 실제 서버에 왜 runserver를 하지 않고 웹서버+wsgi를 사용할까? "그냥 다들 사용하니까", "검색하면 이렇게 나오니까" 라는 이유 말고 왜라는 질문에서 시작하여 이 내용을 정리하게 되었습니다. 1. 클라이언트와 서버의 구조 내용을 작성하기 앞서 애플리케이션은 요청과 응답이 어떻게 동작하는지에 대해 짚고 넘어가야합니다. 아래 그림을 보며 간략히 설명을 작성하였습니다. 1-1. 동작 순서 사용자가 앱이나 웹브라우저 환경에서 API 서버에 요청을 하게 됩니다. 해당 요청은 가장 먼저 웹서버에 가게 됩니다. 클라이언트 API 호출 가장 먼저 웹서버로 접속합니다 (nginx) 소켓을 통해 wsgi까지 도달 (wsgi: 장고와 웹서버의 데이터 통신을 교환할 수 있게 도와주는 인터페이스) wsgi에서 django로 전달되어 프로젝트내 파이썬 코드가 실행 1-2. webserver.. 2021. 11. 14. 21:43
Posts/CS 파이썬으로 공부하는 자료구조 자료구조란? CodeIt 자료구조 수업을 정리한 내용입니다. 자료구조 우리가 데이터를 저장하고 관리하기 위한 구조입니다. 예를 들어 서점에서 개발책을 찾으려 할때 IT 구역으로 가서 언어별 또는 기술별 카테고리를 찾아서 책을 찾는 것과 비슷한 개념입니다. 늘 정해진 규칙속에 분리하여 정리를 해놓으면 그만큼 자료를 찾기도 쉽기 때문에 자료구조도 이러한 원리로 데이터의 효율적 접근 및 조작을 위한 저장 및 관리 방식으로 이해하면 쉽습니다. 데이터가 저장되는 곳 스토리지 데이터가 영구적 저장 데이터를 저장 or 받아오는데 시간이 느림 언제 사용할지 모르는 파일 저장 메모리 데이터를 임시 저장 문서 파일을 작성시는 메모리에 임시저장된 상태, 저장버튼을 눌렀을시 스토리지에 저장 데이터를 저장 or 받아오는데 시간.. 2021. 11. 13. 10:20