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

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

Django로 동적 웹 페이지 만들기

1. Model로 DB 구성하기 remind ORM - 객체 단위로 데이터베이스를 다룰수 있게 도와준다. homepage/models.py 클래스 단위로 만든다. 클래스의 속성이 실제 데이터베이스에서 칼럼이 된다. 문자열 : CharField 숫자: IntegerField, SmallIntegerField ... 논리형: BooleanField 시간/날짜: DateTimeField from django.db import models # Create your models here. class Coffee(models.Model): name = models.CharField(default="", null=False, max_length=30) price = models.IntegerField(default=..

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

Django 시작하기

Make Website with django Model, View, and Template 1. Django 시작하기 Python 기반 웹 프레임워크 장고 플라스크 모두 같은 프레임워크지만 지향하는 바가 다르다. 플라스크는 마이크로(최소한의 기능을 갖고 있음), 반명 장고는 거의 모든것이 내장되있는 스타일 Django 가상환경 설치하기 pip3 install virtualenv python3 -m virtualenv 가상환경 실행 후 pip install django(반드시 가상 환경 진입 상태인것을 확인하기) 가상환경 실행 source venv/bin/activate(맥의 경우) pip freeze를 통해 제대로 설치됫나 확인하기 django-admin startproject manage.py를 통해 ..

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

AWS - RDS 기초

RDS란? AWS 클라우드에서 관계형 데이터베이스를 더 쉽게 설치, 운영 및 확장할 수 있는 웹 서비스이다. 자세한 내용은 AWS RDS document를 읽어보자 실습 AWS콘솔에서 RDS 대시보드로 진입 DB인스턴스를 클릭하면 생성된 DB목록을 볼 수 있다. 데이터 베이스 생성 - MySQL 프리티어로 선택 퍼블릭 엑세스 예로 설정해주기 암호 인증 선택 생성 완료 데이터베이스를 생성하고 보통 클라이언트를 통해 많이 접속한다. mysql workbench 인텔리제이의 datagrip plugin? hostname에는 엔드포인트 이름을, 포트 3306, username은 아까 생성한 아이디, 비밀번호를 입력하고 test connection 데이터그립도 똑같다. 만약 접속이 안된다면 내IP를 보안그룹규칙에..

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

AWS EC2 실습

1. EC2를 생성해 본다. aws 콘솔에서 ec2 대시보드 진입 프리티어로 일단 이용해보기 인스턴스 세부 구성 페이지 일단은 세부사항 설정까지 하지 않고 검토 및 시작을 통해 인스턴스를 실행시킨다. 태그를 편집해노면 나중에 이 인스턴스가 어떤 서버인지 알기 쉽다. 키페어 설정을 해준다. 콘솔에 들어갈수 있도록 인증하는 개인키 없으면 새로 만들면 되고 분실하면 안된다. 인스턴스 생성 완료 SSH 접속을 해야하기 때문에 22번 포트는 열어둔다. 포트란? 2. private key 를 발급해 본다. 3. EC2 서버에 접속해 본다. chmod 400 ***.pem ssh -i ***.pem ubuntu@11.222.333.44 맥을 쓰면 터미널 프로그램을 쓰면 된다. 윈도우 경우 putty, mobatek을..

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

AWS 서비스들

EC2 Elastic Cloud Compute - 자세한 내용은 AWS 공식 홈페이지 다큐먼트를 읽어보자! 서버가상화를 통해 제공 생성할 때 인스턴스 타입, 가격 정책 등을 보고 자신에게 맞는 인스턴스를 생성하면 된다. AMI AMI - Amazon Machine Image 가상머신은 Image를 활용하여 생성 이미지 - OS, 설치된 프로그램, 설정 등이 포함된 파일 이미지를 가상 서버에 적용하여 동일한 환경 구성 가능 다양한 AMI 제공 - OS별, 목적별, Market Place Security Group EC2 인스턴스에 대한 보안 설정 default로 EC2는 모든 port에 대해 막혀있음 inbound, outbound에 대해 접속 허용 설정 가능 KEY Pair EC2 인스턴스에 접속하기 위..

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

클라우드 서비스 개요

1. Cloud Service 🌐 클라우드 개요 클라우드 컴퓨팅이란 인터넷 기반의 컴퓨팅을 말한다. 인터넷을 통해 사용자에게 제공하는 인프라, 플랫폼 또는 소프트웨어를 말한다. 클라우드(Cloud)라는 단어가 말해주듯, 인터넷 통신망 어딘가에서 구름에 쌓여 보이지 않는 컴퓨팅 자원을 원하는대로 가져다 쓸 수 있다. On Demand 대규모 확장성 종량제 과금 관리의 편의성 클라우드 유형(service model) Iaas(Infrastructure as a Service) 서버, 네트워킹, 스토리지와 데이터 센터 공간 등의 컴퓨팅 자원을 종량제 방식으로 사용 Paas(Platform as a Service) 기본 하드웨어, 소프트웨어, 프로비저닝, 호스팅 등을 구매하여 관리하는 비용과 복잡도 없이, 웹 ..

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

Flask 입문

📌 Flask를 활용해 REST API 구축해보기 📌 Django를 활용해서 웹 사이트 구축하기 1. Flask Python 기반 마이크로 웹 프레임워크. 마이크로라는 말은 essential한 것이 다 있다는 뜻이라고 한다. 굉장히 가볍고 작은 프로젝트에서 높은 효율을 보인다고 한다. Flask를 사용하기 위해 가상환경을 구축해 사용해보도록 하자. 목적에 따른 모듈만 있는 환경을 구축해서 관리 # 맥의 경우 파이썬2가 설치되있어 파이썬3를 사용한다고 명시줘야한다 한다. pip3 install virtualenv # 현재 디렉토리에 새 virtualenv 가상환경 만들기 python3 -m virtualenv 가상환경_이름 가상환경 실행하기 해당 설치되있는 프로젝트 아래에서 다음의 명령어 실행(mac) s..

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

트리(Trees)

정점(node) 과 간선(edge)을 이용하여 데이터의 배치 형태를 추상화한 자료 구조 루트(root) 노드 리프(Leaf) 노드 부모(Parent) 노드와 자식(Child) 노드 노드의 수준(level) 트리의 높이(Height) = 최대수준(level) + 1, 깊이(depth) 라고도 함 부분 트리(서브 트리 - Subtree) 노드의 차수(Degree) - 자식(서브트리)의 수 이진 트리(Binary Tree) 모든 노드의 차수가 2 이하인 트리 재귀적으로 정의할 수 있음 루트 노드 + 왼쪽 서브 트리 + 오른쪽 서브트리(단, 이 떄 왼쪽과 오른쪽 서브트리 또한 이진 트리) 포화 이진 트리(Full Binary Tree) 모든 레벨에서 노드들이 모두 채워져 있는 이진 트리(높이가 k이고 노드의 개..

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

큐(Queues)

큐(Queue) 자료(data element)를 보관할 수 있는 (선형) 구조 단, 넣을 때에는 한 쪽 끝에서 밀어 넣어야 하고 - enqueue 연산 꺼낼 때에는 반대 쪽에서 뽑아 꺼내야 하는 제약이 있음 - dequeue 연산 선입선출(FIFO - First In First Out) 특징을 가지는 선형 자료구조 큐의 추상적 자료구조 구현 배열(Array)를 이용하여 구현 class ArrayQueue: def __init__(self): self.data = [] def size(self): return len(self.data) def isEmpty(self): return self.size() == 0 def enqueue(self, item): self.data.append(item) def d..

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

스택(stack)

스택(Stack) 자료(data element)를 보관할 수 있는 선형 구조 단, 넣을 때에는 한 쪽 끝에서 밀어 넣어야 하고(Push 연산) 꺼낼 때에는 같은 쪽에서 뽑아 꺼내야 하는 제약이 있음(Pop 연산) 후입선출(LIFO - Last In First Out) 특징을 가지는 선형 자료구조 스택 언더플로우(stack underflow) - 비어 있는 스택에서 데이터 원소를 꺼내려 할 때 스택 오버플로우(stack overflow) - 꽉 찬 스택에 데이터 원소를 넣으려 할 때 스택의 추상적 자료구조 구현 배열(array)를 이용하여 구현 python 리스트를 이용하여 구현 class ArrayStack: def __init__(self): self.data = [] def size(self): re..

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

Git & Github

Git이란? 분산 버전관리 시스템 Repository 중앙에 있는 원격저장소를 두고, 로컬 저장소를 둔다. git 시작하기 다음 명령을 통해 현재 작업중인 디렉토리를 git 저장소로 지정할 수 있다.(로컬 저장소 생성) git init git 저장소에서 파일의 상태 위 그림에서 remote는 github이다. git 로컬 저장소에 Commit 남기기 git 파일의 관리 단위 git status를 통해 현재 git 저장소의 상태 확인 git add 을 통해서 커밋에 반영할 파일 지정(unstaged -> staged) 다음 git commit 진행 commit을 잘 남겼는지 확인하고 싶으면 git log를 보면됨. git add . git add git commit -m "커밋 로그, 텍스트" git lo..

프로그래머스 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기/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을 생성한다. 이를 바탕으로 요소를 변경하거나 찾을 수 있다. 파이썬으..

프로그래머스 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기/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 =..

프로그래머스 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의 서버 임대는 계약을..

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

선형 배열(Linear Array)

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

프로그래머스 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) 성질: 최대..

프로그래머스 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) (착안점) 학생의 범위가 굉장히 좁..

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

힙 - Heaps

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

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

이진 탐색 트리(Binary Search Trees)

정의 모든 노드에 대해서, 왼쪽 서브트리에 있는 데이터는 모두 현재 노드의 값보다 작고 오른쪽 서브트리에 있는 데이터는 모두 현재 노드의 값보다 큰 성질을 만족하는 이진 트리를 말한다. 이진 탐색과 매우 연관이 깊은 자료구조 -> 탐색에 특화된 자료구조 (장점) 데이터의 원소의 추가, 삭제가 용이하다. (단점) 공간 소요가 큼 이진 탐색 트리의 추상적 자료구조 데이터 표현 - 각 노드는(key, value) 의 쌍으로 관리. 키를 노드의 번호로 하고 value에 내가 원하는 값을 넣어 활용할 수 있다. 키를 이용해서 검색이 가능하고 보다 복잡한 데이터 레코드로 확장이 가능해진다. 연산의 정의 insert(key, data) - 트리에 주어진 데이터 원소를 추가 remove(key) - 특정 원소를 트리로..

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

이진 트리(Binary Trees)

이진 트리의 추상적 자료구조 연산의 정의 size() - 현재 트리에 포함되어 있는 노드의 수를 구함 depth() - 현재 트리의 깊이(또는 높이: height)를 구함 순회(traversal) 이진 트리의 구현 - 노드(Node) class Node: def __init__(self, item): self.data = item self.left = None self.right = None class Node: def __init__(self, item): self.data = item self.left = None self.right = None def size(self): l = self.left.size() if self.left else 0 r = self.right.size() if self...

한상희
'프로그래머스 AI 데브코스 5기/CS' 카테고리의 글 목록