본문 바로가기

분류 전체보기502

Data Structure - Hash Table (1) 1. 해쉬 테이블(Hash Table) Hash Table은 Key와 Value 한 쌍으로 저장하는 데이터 구조를 갖고 있다. Key를 이용하여 원하는 data(value)를 바로 찾을 수 있기에 검색속도가 빠르다는 장점이 있다. 파이썬의 Dictionary가 해쉬 테이블이고 그렇기에 파이썬에서는 별도로 해쉬테이블을 구현할 필요가 없다. ex) dic = {"name":"Raphael", "job":"developer"} [알아야 하는 용어] 해쉬(Hash): 임의 값을 고정된 길이로 변환하는 것 해쉬 테이블(Hash Table): 키 값에 대응하는 value를 갖고 있는 저장공간으로, 키 값을 기반으로 해시함수를 통해 직접 접근이 가능한 데이터 구조 해시 함수(Hash/Hashing Function):.. 2020. 8. 22.
Data Structure - 시간 복잡도(Time Complexity) 1. 시간 복잡도 - 어떤 문제를 해결하는데에 있어 어떤 알고리즘이 가장 빠른지 판단하기 위해 알고리즘의 효율성을 수치적으로 계산한 것이다. - 알고리즘의 효율성을 측정하기 위해서 알고리즘이 복잡한 정도를 계산하는데 여기에는 시간과 공간, 2가지가 있다. 시간 복잡도 - 알고리즘의 실행 속도 공간 복잡도 - 알고리즘이 사용하는 메모리의 양/사이즈 * 현업에서 주로 사용하는 것은 시간복잡도이다. 시간복잡도에 대하여 자세히 알아보자. c) 시간 복잡도의 핵심 요소 - 반복문 - 알고리즘 구조에서 어느 부분에서 가장 시간을 많이 소요하는지를 파악하는 것이 핵심이다. - 입력의 크기가 커질수록 반복문의 수행시간이 증가하게 되며, 이는 곧 알고리즘의 수행시간을 증가시킨다. d) 시간복잡도의 표기법 종류 Big O.. 2020. 8. 21.
Data Structure - Linked List (2) 1. Linked List - 특정 노드 삭제 - 특정 노드를 삭제하는 경우는 3가지가 있다(첫노드, 중간노드, 마지막노드). 이를 배워보기 전에 베이스로 이용할 연결리스트를 코드로 작성한다. - 위의 코드를 기반으로 3가지 노드 삭제 경우를 처리하기 위한 delete메소드를 작성한다. a) head 노드 삭제 b) 마지막 노드 삭제 & 중간 노드 삭제 2. 다양한 Linked List 구조 - Double Linked List - 연결리스트의 단점은 대용량 자료검색이 힘들다는 점이다. 그 이유는 노드마다 다음 노드의 주소값을 갖고 있기 때문에 1만개의 노드 중 가장 8000번째 노드를 찾는다면 0부터 7999번까지 모든 자료를 보아야 한다. 이런 단점을 해결하기 위해 연결리스트는 다양한 구조로 구현한다.. 2020. 8. 20.
HTML/CSS - Block & Inline 1. Blocks and In-lines - HTML의 태그들은 크게 Block과 In-line으로 분류되고 어떻게 정렬되느냐의 차이가 있다. Blocks: HTML 요소간의 정렬이 수직으로만 가능하다. 즉, 요소 옆에 다른 요소를 배치할 수 없다. ex) div, p태그 등 In-lines: HTML 요소간의 정렬이 수평으로 가능하다. 즉, 요소 옆에 다른 요소를 배치할 수 있다. ex) span태그 등 ex) 1개의 div와 3개의 span태그를 이용하여 아래와 같이 요소를 생성해보겠습니다. - 위의 사진을 보면 div옆에 공간이 많은데 불구하고 span태그가 div태그 아래에 배치되어있는 것을 볼 수 있다. 왜 그런 것일까? - div태그는 Block형태의 태그이기 때문에 수직정렬만 가능하다. 눈으.. 2020. 8. 18.
HTML/CSS - 기본구조 및 tags 1. MDN HTML 문서 - HTML에는 정말 다양한 태그가 있습니다. 모든 태그를 다 기억해서 사용하는 것은 쉽지 않고 자주 사용하는 태그를 기반으로 모르는 태그나 필요한 기능은 검색을 하는 방식으로 사용합니다. - 구글에 HTML 관련검색을 할 경우, 검색어 뒤에 mdn을 붙이면 HTML 태그가 정리되어 있는 Mozilla의 문서가 검색 결과로 는데 이 문서에는 더욱 정확한 태그 설명과 사용법 그리고 한국어도 지원하니 이를 참고하시길 바랍니다. https://developer.mozilla.org/en-US/docs/Web/HTML/Element HTML elements reference This page lists all the HTML elements, which are created using.. 2020. 8. 17.
Data Structure - Stack & Linked List 1. Stack(스택) - 쌓다 - 큐와 다르게 데이터의 출입이 한쪽에서만 발생한다. - 그러므로 가장 나중에 삽입된 데이터가 가장 먼저 나가는 구조를 갖고 있다.(LIFO - Last In, First Out) [주요 기능] push(): 스택에 데이터 삽입 pop(): 스택에서 데이터 꺼내기 [Stack 활용의 예] - Stack은 프로세스 실행 구조의 기본이다. 그러므로 프로세스에서는 스택의 자료구조를 사용한다. [Stack 장점] 구조가 단순해서 구현이 쉽다. 데이터를 저장/읽기(검색) 속도가 빠르다. → 프로세스 실행 구조로 사용하는 이유 [Stack 단점] 데이터의 최대 개수를 미리 정해야 한다. 그렇기에 남는 공간이 생길 수 있다.(낭비 발생 - 이런 이유로 파이썬은 재귀함수를 1000번까지.. 2020. 8. 14.
Data Structure - Array * 해당 포스팅은 파이썬을 이용한 알고리즘 공부를 기록합니다. 1. 자료구조와 알고리즘이란? - 자료구조(= data structure): 대량의 데이터를 효율적으로 관리할 수 있는 데이터구조를 의미한다. - 데이터의 특성과 구조에 따라 데이터를 효율적으로 처리하기 위해 필요한 코드가 달라진다. 현실 속 데이터관리의 예시) 학년/반/학번, 우편번호, 전화번호, 주민등록번호 등등 현실 속 자료구조의 예시) 전화번호부, 사전 대표적 자료구조) 배열, 스택, 큐, Linked List, Hash Table, Heap, etc - 알고리즘(= algorithm): 어떤 문제를 풀기 위한 절차 또는 특정 입력에 따라 원하는 출력을 얻게하는 프로그래밍 - 프로그래밍에서 어떤 문제를 풀기 위한 방식이나 과정은 정해져.. 2020. 8. 12.
Flask로 웹스크래퍼 만들기 - 전체 코드 * 복붙 하시고 코드정리 하시길 바랍니다. 1. scrapper.py import requests from bs4 import BeautifulSoup LIMIT = 50 def get_last_pages(url): result = requests.get(url) soup = BeautifulSoup(result.text, "html.parser") pagination = soup.find("div", {"class": "pagination"}) links = pagination.find_all('a') pages = [] for link in links[:-1]: pages.append(int(link.string)) max_page = pages[-1] return max_page def extrac.. 2020. 8. 12.
파이썬 포스팅을 마치며 8월 9일에서 10일로 넘어가는 지금, 새벽 두시쯤 됐네요. 드디어 저의 첫 포스팅인 파이썬 웹스크래퍼 포스팅을 끝냈습니다. 첫 포스팅이라 많이 부족하지만, 앞으로 성장해서 더 좋은 포스팅으로 여러 정보를 공유하겠습니다. 제가 파이썬을 제일 첫 포스팅으로 시작한 이유는 파이썬을 배워서 알고리즘 공부를 시작하기 위함이였습니다. 이제 기본적인 파이썬 문법을 배웠으니 내일부터는 알고리즘 관련 포스팅과 HTML/CSS 관련 포스팅을 시작할 예정입니다. 누가 시켜서 하는 것은 아니지만 제가 블로그를 시작한 이유이자 목표로서 반드시, 꼭 좋은 개발자가 되어 취뽀하는 모습을 기록하겠습니다. 그때까지 화이팅! 2020. 8. 10.