전체 글

우당탕탕 내가 해보고 싶은거 다 해보고 기록 적어두는 곳.
카테고리 없음

Web Scrapping 기초4

뭉게뭉게 단어구름, wordcloud Wordcloud란 자주 등장하는 텍스트를 중요도나 인기도를 고려해 표현한것 자연어 문장에서 키워드를 추출 키워드가 등장한 빈도를 측정 앞에서 전처리한 정보와 Wordcloud 라이브러리를 바탕으로 Wordcloud 생성 konlpy 설치 pip install wordcloud pip install konlpy 필요한 라이브러리 호출 import matplotlib.pyplot as plt from wordcloud import WordCloud from collections import Counter from konlpy.tag import Hannanum 워드클라우드를 만드는데 애국가 사용 national_anthem = """ 동해물과 백두산이 마르고 닳도록 하..

프로그래머스 AI 데브코스 5기/CS

Web Scraping 기초 - 3

스크래핑 결과 시각화하기 기상청 날씨 정보 시각화해보기 - https://www.weather.go.kr/w/weather/forecast/short-term.do 단기예보 - 기상청 날씨누리 2023년 03월 22일 (수)요일 17:00 발표 (총괄예보관: 허진호) □ (종합) 오늘 밤~내일 오후 전국 대부분 지역 가끔 비, 제주도와 남해안 돌풍과 함께 천둥.번개 유의○ (오늘) 전국 대체로 흐림, 제주도 www.weather.go.kr 필요한 라이브러리 불러오기 from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.service import S..

프로그래머스 AI 데브코스 5기/Data study

시각화 결과로 요약하기 - seaborn

시각화 기초 라이브러리 - Seaborn 여러 기법을 통해서 스크래핑을 진행할 수 있었다. 그런데 스크래핑의 결과가 너무 분산되어있어 한 눈에 보기 어렵다 이를 도와주는 시각화를 진행해보자 matplotlib을 기반으로 하는 시각화 라이브러리 설치하기 pip install seaborn Seaborn Essential import seaborn as sns 꺾은선 그래프(Line Plot) 두 변수 값에 따른 추이를 선으로 이은 그래프 .lineplot()을 이용해서 그릴 수 있음. sns.lineplot(x=[1,2,3,4], y=[0.7,0.2,0.1,0.05]) 막대 그래프(Bar Plot) 범주형 데이터의 "값"과 그 값의 크기를 직사각형으로 나타낸 그림 sns.barplot(x=[1,2,3,4]..

프로그래머스 AI 데브코스 5기/CS

web scrapping 기초 2

동적 웹 페이지와의 만남 정적 웹사이트와 동적 웹사이트 웹 페이지는 어떻게 생성되느냐에 따라 크게 2가지로 구분 HTML 내용이 고정된 정적(static) 웹 사이트 정적 웹사이트는 HTML 문서가 완전하게 응답된다. HTML 내용이 변하는 동적(dynamic) 웹 사이트 동적 웹 사이트는 응답 후 HTML이 렌더링 될 때까지의 지연시간이 존재 동적 웹사이트의 동장 방식 웹 브라우저에선 JavaScript라는 프로그래밍 언어가 동작한다. 비동기 처리를 통해서 필요한 데이터를 채운다, 동기처리: 요청에 따른 응답을 기다린다. 비동기처리: 요청에 따른 응답을 기다리지 않는다. 동기 처리된 경우, HTML 로딩에 문제가 없다. 비동기 처리된 경우, 상황에 따라서 데이터가 원전하지 않은 경우가 발생한다. 지금까..

프로그래머스 AI 데브코스 5기/CS

Web Scraping 기초

DOM(Document Object Model) 브라우저의 렌더링 엔진은 웹 문서를 로드한 후, 파싱을 진행 html문서를 브라우저가 파싱해와서 생긴 모든 태그의 집합(트리 구조) 이것을 DOM이라고 한다(맞나?) 왜 브라우저는 DOM을 굳이 만들어내는 걸까? DOM의 목적 각 노드를 객체로 생각하면 문서를 더욱 편리하게 관리할 수 있다. DOM을 다루는 예시 DOM Tree를 순회해서 특정 원소를 추가할 수 있다. DOM Tree를 순회해서 특정 원소를 찾을 수 있다. DOM으로 바꾸면 좋은 점 원하는 요소를 동적으로 변경해 줄 수 있다. 원하는 요소를 쉽게 찾을 수 있다. 브라우저의 렌더링 요약 브라우저는 HTML을 파싱해서 DOM을 생성한다. 이를 바탕으로 요소를 변경하거나 찾을 수 있다. 파이썬으..

Algorithm

[프로그래머스 - lv1] 나머지 한 점

문제 링크: https://school.programmers.co.kr/learn/courses/18/lessons/1878?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 파이썬 zip() 함수 동일 개수로 이루어진 자료형을 묶어 주는 함수 반환값: 두 개 이상의 리스트의 값의 같은 인덱스 짝별로 묶어 튜플에 담아 반환해준다. 만약 짝이 안맞다면 짝이 맞는 부분만 return 된다. zip(*zip) 하게 되면 zipped 한 요소들을 unzip해준다. 문제풀이 from collections import Counter def..

프로그래머스 AI 데브코스 5기/CS

양방향 연결 리스트(Doubly Linked List)

양방향 연결 리스트(Doubly Linked Lists) 한 쪽으로만 링크를 연결하지 말고, 양쪽으로! 앞으로도(다음 node) 뒤로도 (이전 node) 진행 가능 Node의 구조 확장 class Node: def __init__(self, item): self.item = item self.prev = None self.next = None 리스트 처음과 끝에 dummy node를 둔다. 데이터를 담고 있는 node들은 모두 같은 모양 class Node: def __init__(self, item): self.item = item self.prev = None self.next = None class DoubleLinkedList: def __init__(self, item): self.nodeCou..

프로그래머스 AI 데브코스 5기/CS

연결 리스트(Linked Lists)

추상적 자료구조(Abstract Data Structure) Data(정수, 문자열, 레코드...) A set of operations(삽입, 삭제, 조회, 정렬, 탐색...) 기본적 연결리스트 노드는 데이터와 링크로 이루어진다. 노드 내의 데이터는 다른 구조로 이루어질 수 있음 리스트의 맨 앞을 Head, 맨 뒤를 Tail이라고 한다. 노드가 몇개 있는지까지 기록해두면 편하다. 링크드 리스트 구현 노드 class Node: def __init__(self, item): self.data = item self.next = None class LinkedList: def __init__(self): self.nodeCount = 0 self.head = None self.tail = None 연산 정의 특..

프로그래머스 AI 데브코스 5기/CS

알고리즘의 복잡도

시간 복잡도(Time Complexity) 문제의 크기와 이를 해결하는 데 걸리는 시간 사이의 관계 평균 시간 복잡도(Average Time Complexity): 임의의 입력 패턴을 가정했을 때 소요되는 시간의 평균 최악 시간 복잡도(Worst-case Time Complexity): 가장 긴 시간을 소요하게 만드는 입력에 따라 소요되는 시간 공간 복잡도(Space Complexity) 문제의 크기와 이를 해결하는데 필요한 메모리 공간 사이의 관계 Big-O Notation 점근 표기법(asymptotic notation)의 하나 어떤 함수가 증가 양상을 다른 함수와의 비교로 표현(알고리즘의 복잡도를 표현할 때 흔히 쓰임) $O(n)$, $O(n^2)$.... 선형 시간 알고리즘 - $O(n)$ 이차 ..

프로그래머스 AI 데브코스 5기/CS

Web Scrapping 기초

인터넷과 사용자간의 약속 HTTP 인터넷과 웹 두 컴퓨터를 연결하는 네트워크(network)의 탄생 이 네트워크를 묶어 근거리 지역 네트워크(Local Area Network, LAN) 탄생 범지구적으로 연결된 네트워크 Inter Network - 인터넷(Internet) 탄생! 이 인터넷에서 정보를 교환할 수 있는 환경 - WWW(World wide web) 줄여서 web 탄생 📌 인터넷은 여러 컴퓨터 끼리 네트워크를 연결한 것 📌 Web은 인터넷 상에서 정보를 교환하기 위한 시스템 웹에서 정보 주고받기 정보를 요청하는 컴퓨터를 클라이언트, 정보를 제공하는 컴퓨터를 서버라고 한다. 클라이언트가 서버에게 정보를 요청한다. 요청에 대해서 서버가 작업을 수행 수행한 작업의 결과를 클라이언트에게 응답 HTTP..

프로그래머스 AI 데브코스 5기/Data study

jupyterlab 시작하기

먼저 본인 pc에 파이썬3이 설치되있는지 확인 pip install jupyterlab pip3 install jupyterlab python -m pip install jupyterlab jupyterlab 실행하기 터미널에서 jupyter lab이라고 입력하면됨 아래와 같은 창이뜨면 성공적으로 설치된것이다. 단축키 dd -> 셀 삭제 코드셀 전환 -> y, 마크다운 셀 전환 -> m 마크다운 Header : 보통 제목 작성할때 사용(h1 부터 h6 까지 있음) 이탤릭체 볼드체 strikethrough(취소선) 마크다운에서 code를 적을때는 백틱(`)을 이용하면 된다. 줄바꿈은 스페이스 두번

프로그래머스 AI 데브코스 5기/CS

재귀 알고리즘(Recursive Algorithm)

재귀함수(recursive function)란? 하나의 함수에서 자신을 다시 호출하여 작업을 수행하는 것 📌 간단한 예 - 자연수의 합 구하기 문제: 1부터 n 까지 모든 자연수의 합을 구하라. $S = \sum_{k=1}^n = n + \sum_{k=1}^{n-1} k$ def sum(n): if n 안그러면 무한 루프에 빠짐 4강 실습: 피보나치 순열 구현하기 $F0 = 0$ $F1 = 1$ $F_n = F_{n-1} + F_{n-2}$ # 재귀적 def solution(x): answer = 0 if x == 0: return 0 elif x == 1: return 1 else: return solution(x-1) + solution(x-2) # 반복문 def solution(x): a, b =..

Programming/Django

장고(Django) 페이지 구성 개선하기

템플릿 파일에서 if문 사용하기 if-else 문으로 조건에 따라 이미지 보여주기 이미지가 있을 경우 보여주기 blog/templates/blog/post_list.html {% for p in post_list %} {%if p.head_mage%} {%endif%} {{p.title}} {{p.content}} Read More → Posted on {{p.created_at}} by 작성자명 쓸 위치(개발예정) {%endfor%} 이미지가 없을 경우 사용할 임의의 이미지 가져오기 Lorem Picsum 이용 {% for p in post_list %} {%if p.head_image%} {%else%} {%endif%} {{p.title}} {{p.content}} Read More → Posted..

Programming/Django

장고(Django) 정적 파일과 미디어 파일 관리하기

정적 파일 관리하기 지금까지 만든 프로젝트 구조에 이제 부트스트랩을 적용시켜 보자! 포스트 목록 페이지에 부트스트랩 적용하기 blog_list.html 다시 사용하기. 이 내용을 post_list.html에 덮어 씌워준다. Do It Django Home (current) Blog About Me Dropdown link Action Another action Something else here Log In   Log In ×    Log in with Google    Log in with E-mail    Sign Up with E-mail Close Blog January 1, 2022 Post Title Lorem ipsum dolor sit am..

Programming/Django

장고(Django) 웹 페이지 만들기

장고 프로젝트 초반 설정세팅 하기 https://sanghui48.tistory.com/92 - 장고 서버 세팅하기 URL 설정하기 표지판 역할을 하는 urls.py 페이지 URL 대문페이지 도메인/ 블로그 페이지 포스트 목록 도메인/blog/ 포스트 상세 도메인/blog/포스트_pk 자기소개 페이지 도메인/about_me/ 포스트 목록 페이지 만들기 프로젝트/url.py 만들기 from django.contrib import admin from django.urls import include, path urlpatterns = [ path('blog/', include('blog.urls')), path('admin/', admin.site.urls), ] blog/urls.py 생성 후 다음 내용 작..

Programming/Django

장고(django) 프로젝트에서 앱 만들기

모든 장고 프로젝트는 1개 이상의 앱으로 구성된다. 이때 '앱'은 '특정한 기능을 수행하는 단위 모듈'로 생각하면 된다. blog앱과 single_pages 앱 만들기 python manage.py startapp blog python manage.py startapp single_pages 위 두 명령어를 이용 하면 아래와 같이 2가지 앱이 추가적으로 생성된다. 모델 만들기 장고의 장점중 하나는 모델을 이용해 장고 웹 프레임워크 안에서 데이터베이스를 관리할 수 있다는 것이다. 블로그 글을 위한 모델 만들기 Post 모델 만들기 blog/models.py를 열어 다음과 같이 입력 from django.db import models # Create your models here. class Post(mod..

Programming/Django

장고(django) 기초

장고로 만든 웹 사이트 작동 구조 MTV 패턴을 따른다. 모델(model)로 자료의 형태를 정의하고, 뷰(view)로 어떤 자료를 어떤 동작으로 보여줄지 정의하고, 템플릿(template)으로 웹페이지에서 출력할 모습을 정의한다. 실습 환경 설정하기 venv라는 가상 환경을 만들면되는데, IDE를 써서 만들어도 되고 아니면 cli로 만들어도 되고 본인이 편한대로 만들면 된다. (나같은 경우는 파이참으로 오류나서 그냥 명령어모드로 만듬) 해당 프로젝트 디렉터리 내에서 다음 스크립트 실행 .venv\Scripts\activate.bat 그러면 터미널에서 앞에 (.venv)라는 문구가 생긴다. 가상 환경 상에서 장고를 설치해야 한다. pip install django 나 같은 경우에는 버전이 4.1.7이다. ..

프로그래머스 AI 데브코스 5기/CS

API to serve ML Model

Architecture of API to serve ML model AWS EC2와 Python Flask 기반 모델 학습 및 추론을 요청/응답하는 API 서버 개발 Interface 사용자는 기계와 소프트웨어를 제어하기 위해 인터페이스를 정해진 매뉴얼에 따라 활용하여 원하는 경험을 획득 컴퓨터의 마우스, 키보드와 같이 입력을 위한 인터페이스와 모니터나 프린터와 같이 정보를 받는 출력을 위한 인터페이스가 있음 인터페이스는 상호 합의된 메뉴얼에 따라 적절한 입력을 받아 기대되는 출력을 제공할 수 있음 API란? Application Programming Interface의 약자로 기계와 기계, 소프트웨어와 소프트웨어 간의 커뮤니케이션을 위한 인터페이스를 의미 노드와 노드 간 데이터를 주고 받기 위한 인터페..

프로그래머스 AI 데브코스 5기/CS

AWS Enviroment 환경 세팅

EC2 생성 AMI 선택 aws management console이 변경되서 아래와 같이 들어오면 된다. management cosole home에서 -> 서비스 -> EC2로 들어가기 다음으로 EC2 Manaement Console에서 인스턴스 시작버튼을 클릭하면 AMI 생성 버튼을 볼수 있다. 인스턴스 시작 페이지에서 아래 보이는 '더 많은 AMI 찾아보기'를 들어가서 deep learning을 검색하면 여러 프로비져닝된 ami를 볼 수 있다. 실제로 만들건 아니라 OS는 우분투, GPU가 달린 AMI를 선택해봤다. 그 다음 인스턴스 유형을 선택한다. t2.micro 또는 computing에 최적화된 c5.large 인스턴스 유형 선택한 후(나 같은 경우는 프리티어로 이용가능한 t2.micro 선택 ..

프로그래머스 AI 데브코스 5기/CS

Basis of Cloud Service - AWS를 활용한 인공지능 모델 배포

1. Basis of Cloud Service Before Cloud Service 과거에는 인터넷 환경에서 서비스를 제공하기 위해 서비스 제공자는 서비스 호스팅에 필요한 모든 것을 직접 구축 데이터 센터를 처음 구축할 때 서비스 아키텍처나 자원 예상 사용량 등을 고려해 구축 회사나 조직이 직접 모든 것을 구축하고 운영하지 않도록 IDC 등장 IDC는 Internet Data Center의 줄임말로 서버 운영에 필요한 공간, 네트워크, 유지 보수 등의 서비스를 제공함 IDC 입주자가 직접 서버를 구입해 들어오기도 하지만 불필요한 또는 유휴 자원이 발생하기 때문에 IDC에서 직접 서버를 임대해주기도 함 서버 임대를 통해 자원을 효율적으로 이용하고 비용을 줄일 수 있지만 대부분의 IDC의 서버 임대는 계약을..

카테고리 없음

배열 - 정렬과 탐색(Sorting & Searching)

정렬(sort) 복수의 원소로 주어진 데이터를 정해진 기준에 따라 새로 늘어놓는 작업. 📌 정렬 알고리즘에는 여러 종류가 있다. Python 의 리스트 (list) 를 이용한다면, 직접 정렬 알고리즘을 구현할 필요가 없다. 이미 리스트 (list) 에 내장된 정렬 기능이 있다 sorted() 내장 함수(built-in function) 정렬된 새로운 리스트를 얻어냄 L = [3, 8, 2, 7, 6, 10, 9] L2 = sorted(L) print(L2) # [2, 3, 6, 7, 8, 9, 10] print(L) # [3, 8, 2, 7, 6, 10, 9] sort() 리스트의 메서드(method) 해당 리스트를 정렬함 L = [3, 8, 2, 7, 6, 10, 9] L2 = sorted(L) pri..

프로그래머스 AI 데브코스 5기/CS

선형 배열(Linear Array)

알고리즘(algorithm)이란? [사전적 정의] 어떤 문제를 해결하기 위한 절차, 방법, 명령어들의 집합 [프로그래밍] 주어진 문제의 해결을 위한 자료구조와 연산 방법에 대한 선택 해결하고자 하는 문제에 따라(응용 종류와 범위에 따라) 최적의 해법은 서로 다르다! -> 이 선택을 어떻게 해야 하느냐를 알기 위해 자료구조를 이해해야 함 1강 실습: 리스트 원소 두 개의 합 구하기 def solution(x): return x[0] + x[-1] 배열(Arrays) 같은 종류의 데이터가 줄지어 늘어서있는 자료 구조를 의미한다. 파이썬에서는 리스트(List) 자료구조가 이와 비슷하게 사용된다. 리스트(배열) 연산 원소 덧붙이기 L = ['Bob', 'Cat', 'Spam', 'Programmers'] L.a..

카테고리 없음

깊이/너비 우선 탐색(DFS/BFS) 대표 문제 풀이: 여행경로

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 배경지식 그래프(graphs)란 자료구조 정점(vertex, node)과 간선(edge, link) 유향(directed) 그래프와 무향(undirected) 그래프 스택(stack) 큐(queue) 깊이 우선 탐색(DFS; Depth First Search) 한 정점에서 인접한 모든(아직 방문하지 않은) 정점을 방문하되, 각 인접 정점을 기준으로 깊이 우선 탐색을 끝낸 후 다음 정점..

프로그래머스 AI 데브코스 5기/CS

동적계획법(Dynamic Programming) 대표 문제 풀이 - N으로 표현

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 동적 계획법(Dynamic Programming) 주어진 최적화 문제를 재귀적인 방식으로 보다 작은 부분 문제로 나누어 부분 문제를 풀어, 이 해를 조합하여 전체 문제의 답에 이르는 방식 알고리즘의 진행에 따라 탐색해야 할 범위를 동적으로 결정함으로써 탐색 범위를 한정할 수 있음 Knapsack Problem : 참고 싸이트 https://gsmesie692.tistory.com/11..

프로그래머스 AI 데브코스 5기/CS

힙(Heap) 대표 문제 풀이: 더 맵게

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 방법 만약 음식을 스코빌 지수로 정렬한 다음 앞에서부터 하나씩 k와의 비교를 통해($O(N)$) 작으면 섞어주고 다시 배열에 삽입해 주는 과정을 반복하게 된다면 ($O(N)$) 총 $O(N^2)$의 시간 복잡도를 갖게 된다. 📌 그렇다면 이 문제에서 가장 필요한 상황은 무엇일까 삽입과 조회를 할때 계속 최솟값을 찾을수 있는 상황. -> 최소힙? 힙(Heaps) 성질: 최대..

카테고리 없음

탐욕법 - 큰 수 만들기

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42883 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 방법 앞 자리에서부터 하나씩 골라서 담되, 지금 담으려는 것보다 작은 것들은 도로 뺀다! 단, 뺄 수 있는 수효에 도달할 때까지만 큰 수가 앞자리에, 작은 수가 뒷자리에 놓이도록 (제약조건) 뺄 수 있는 수의 개수 알고리즘 설계 -> 구현 주어진 숫자(number) 로부터 하나씩 꺼내어 모으되 이 때, 이미 모아둔 것 중 지금 등장한 것보다 작은 것들을 빼낸다. 이것은 어디서 어떻게 ..

프로그래머스 AI 데브코스 5기/CS

정렬 - 가장 큰 수

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제의 해결 방법 빈 문자열로 수를 초기화한다. 가장 크게 만들 수 있는 수를 고른다. 그 수를 현재 수에 이어 붙인다. 모든 수를 다 사용할 때까지 반복한다. (조금 나은) 문제의 해결 방법 빈 문자열로 수를 초기화한다. 수의 목록을(크게 만드는 것 우선으로) 정렬한다. 목록에서 하나씩 꺼내어 현재 수에 이어 붙인다. 모든 수를 다 사용할 때까지 반복한다. 알고리즘 설계 -> 구현 ..

프로그래머스 AI 데브코스 5기/CS

탐욕법(Greedy) 대표 문제 풀이: 체육복

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 탐욕법(Greedy Algorithm) 알고리즘의 각 단계에서 그 순간에 최적이라고 생각되는 것을 선택 (탐욕법으로 최적해를 찾을 수 있는 문제) 현재의 선택이 마지막 해답의 최적성을 해치지 않을 때 이 문제에서는 빌려줄 학생들을 "정해진 순서"로 살펴야 하고, 이 "정해진 순서"에 따라 우선하여 빌려줄 방향을 정해야 함 문제의 해결 - 방법(1) (착안점) 학생의 범위가 굉장히 좁..

카테고리 없음

해시(Hash) 대표 문제 풀이: 완주하지 못한 선수

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 제한 조건이 중요하다 보면 n의 수가 100000인데 이런 경우 보통 $O(n)$ 이나 $O(n\log n)$의 복잡도로 풀어야 한다.(파이썬은 1초에 대략 20000000만번의 연산 수행 이를 참고해 계산해 보면 편함) 자료구조(와 알고리즘) 의 선택 만약 이름 대신 번호가 주어졌다면? -> 선형 배열(linear array) 이름의 경우의수가 많아질 수 있으므로 적합하지 않음 📌..

프로그래머스 AI 데브코스 5기/CS

힙 - Heaps

정의 이진 트리의 한 종류(이진 힙 - binary heap) 루트 노드가 언제나 최댓값 또는 최솟값을 가짐 최대 힙(max heap), 최소 힙(min heap) 완전 이진 트리여야 함 📌 재귀적으로도 정의가 가능하다. max heap의 경우 어느 노드를 루트로 하는 서브트리인 경우에도 모두 최대 힙의 조건을 만족한다. 이진 탐색 트리와의 비교 원소들은 완전히 크기 순으로 정렬되어 있는가? 이진 탐색 트리 O, 힙 X 특정 키 값을 가지는 원소를 빠르게 검색할 수 있는가? 이진 탐색 트리 O, 힙 X 부가 제약 조건은 어떤것인가? 힙은 이진 탐색 트리에 비해 완전 이진 트리여야 한다는 부가 제약 조건을 갖고 있다. 최대 힙(Max Heap)의 추상적 자료 구조 연산의 정의 __init__() : 빈 최..

한상희
상희's 실험실