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

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

[인공지능 데브코스 TIL/프로그래머스 데브코스]데이터 팀 소개 & Spark 소개

Big Data: 데이터팀 역할 데이터 팀의 역할과 구성원은 누구인가? 데이터 팀 조직 구조 모델 개발시 고려할 점 데이터 일 관련 교훈 데이터 팀의 역할 데이터 팀은 어떤 역할을 수행하는가? 데이터 팀의 미션: 신뢰할 수 있는 데이터를 바탕으로 부가가치 생성 내가 하는 일이 회사에 어떤 식으로 도움이 될지 계속 또 생각 생각 해볼것 데이터 팀의 목표1 고품질의 데이터를 제공하여 정책 결정에 사용 결정 과학(Decision Science)라고 부르기도 함 데이터 참고 결정(data informed decisions)을 가능하게 함 vs 데이터 기반 결정(data driven decisions) 데이터 팀의 목표2 고품질의 데이터를 필요할 때 제공하여 사용자의 서비스 경험 개선 머신 러닝과 같은 데이터 기..

프로그래머스 AI 데브코스 5기/DataBase & SQL

[인공지능 데브코스 TIL/프로그래머스 데브코스]SQL을 이용한 데이터 분석

SQL의 중요성 모든 데이터 직군에게 필요한 기술은 SQL 데이터 관련 3개의 직군 데이터 엔지니어 파이썬, 자바/스칼라 SQL, 데이터베이스 Spark, Hadoop ETL/ELT(Airflow, DBT) 데이터 분석가 SQL, 비즈니스 도메인에 대한 지식 통계(AB 테스트 분석) 데이터 과학자 ( 통계 중요) 머신러닝 SQL, 파이썬 통계 데이터 요약과 데이터 분석을 위한 SQL 배움이란? 배움에는 시관과 노력이 걸린다. 시간에 따른 배움의 정도 = 실력? 의 그래프를 다음과 같다 했을때, 저 빨간 박스부분에서 견뎌야 한다고 한다. 가장 중요한것을 버티는 힘: 이걸 즐겨야 한다. => shit;; 포기하지 마라. 아무리 못해도 세달은 풀타임으로 메달리라는데, 난 포기 안한다. 포기는 배추 셀 때 하는..

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

Machine Learning 기초

Machin Learning이란? 기계 학습 경험을 통해 자동으로 개선하는 컴퓨터 알고리즘 연구 학습데이터: 입력벡터들 $x_{1} ...., x_{n}$ 목표값들 $t_{1}, .... , t_{n}$ 머신러닝 알고리즘의 결과는 목표값을 예측하는 함수 y(x)를 구하는 것 핵심개념들 학습단계(training or learning phase): 함수 y(x)를 학습데이터에 기반해 결정하는 단계 시험셋(test set): 모델을 평가하기 위해서 사용하는 새로운 데이터 일반화(generalization): 모델에서 학습에 사용된 데이터가 아닌 이전에 접하지 못한 새로운 데이터에 대해 올바른 예측을 수행하는 역량 => 학습 단계에서 train_set을 자꾸 보는 행위는 일반화된 모델의 성능을 떨어트린다. =>..

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

Machine Learning 기초 - Linear Algebra, Matrix Calculus - 3(꼭 복습하기, 직접 손으로 증명해보기)

이차형식(Quadratic Forms) 안에 (1/2A + 1/2A^T) 행렬은 sysmetric matrix다. gram matrix 고윳값(Eigenvalues)와 고유벡터(Eigenvectors) 고윳값 고유벡터의 성질들 고윳값, 고유벡터와 대칭행렬 행렬 미분(Matrix Calculas) 적용 예제들 최소제곱법(Least Squares) 고윳값과 최적화문제(Eigenvalues as Optimization) AutoEncoder와 Principal Components Analysis(PCA)

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

Linear Algebra, Matrix Calculus-2(이 부분은 복습 꼭 하기)

선형독립과 Rank(Linear Independent and Rank) 역행렬(The Inverse) 직교 행렬(Orthogonal Matrices) 치역(Range), 영공간(Nullspace) -???? 행렬식(Determinant)

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

Machine Learning 기초 - Linear Algebra, Matrix Calculus

왜 선형대수를 알아야 하는가? Deep learning을 이해하기 위해서 반드시 선형대수 + 행렬미분 + 확률의 탄탄한 기초가 필요하다. 이렇게 핵심 아이디어가 행렬에 관한 식으로 표현되는 경우가 많다. 목표: 선형대수와 행렬미분의 기초를 배우고 간단한 머신러닝 알고리즘(PCA)을 유도해보자 기본 표기법 m개의 행과 n개의 열을 가진 행렬을 의미한다. $x \in \mathbb{R}^{n}$ 는 n개의 원소를 가진 벡터를 의미한다. n차원 벡터는 n개의 행과 1개의 열을 가진 행렬로 생각할수도 있다. 이것을 열벡터(column vector)로 부르기도 한다. 만약 명시적으로 행벡터(row vector)를 표현하고자 한다면, $x^{T}$ (T는 transpose)로 쓴다. numpy로 dimension ..

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

End-to-End 머신러닝 프로젝트 - 2

Estimator, Transformer, Predictor 추정기(estimator): 데이터셋을 기반으로 모델 파라미터들을 추정하는 객체를 추정기라고 한다.(예를 들자면 imputer), 추정 자체는 fit() method에 의해서 수행되고 하나의 데이터셋을 매개변수로 전달받는다.(지도 학습의 경우 label을 담고 있는 데이터셋을 추가적인 매개변수로 전달). 변환기(transformer): (imputer 같이)데이터셋을 변환하는 추정기를 변환기라고 한다. 변환은 transform() method가 수행한다. 그리고 변환된 데이터셋을 반환한다. 예측기(predictor): 일부 추정기는 주어진 새로운 데이터셋에 대해 예측값을 생성할 수 있다. 앞에서 사용했던 LinearRegression도 예측기이..

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

End-to-End 머신러닝 프로젝트

부동산 회사에 막 고용된 데이터 과학자라고 가정. 주요 단계는 다음과 같다. 1. 큰 그림을 본다. 2. 데이터를 구한다. 3. 데이터로부터 통찰을 얻기 위해 탐색하고 시각화한다. 4. 머신러닝 알고리즘을 위해 데이터를 준비한다. 5. 모델을 선택하고 훈련시킨다. 6. 모델을 상세하게 조정한다. 7. 솔루션을 제시한다. 8. 시스템을 론칭하고 모니터링하고 유지 보수한다. 켈리포니아 주택 가격 데이터셋 사용. 1. 큰 그림 보기 풀어야 할 문제: 캘리포니아 인구조사 데이터를 사용해 캘리포니아 주택 가격 모델을 만드는 것 모델이 전체 시스템에서 어떻게 사용되는지 이해하는게 중요하다. 문제 정의 지도학습, 비지도학습, 강화학습 중에 어떤 경우에 해당하는가? 분류문제인가 회귀문제인가? 배치학습, 온라인학습 중 ..

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

기계학습과 수학 III

정보이론 정보이론과 확률통계는 많은 교차점을 가짐 확률통계는 기계학습의 기초적인 근간 제공 해당 확률 분포 추정 확률 분포 간의 유사성 정량화 정보이론 관점에서도 기계학습을 접근 가능 불확실성을 정량화 하여 정보이론 방법을 기계학습에 활용한 예 인트로피, 교차 엔트로피, KL 발산(Kullback-Leibler divergence 상대 엔트로피 relative entropy) 정보이론: 사건(event)이 지닌 정보를 정량화 할 수 있나? 정보이론의 기본 원리: 확률이 작을수록 많은 정보 자주 발생하는 사건보다 잘 일어나지 않는 사건 unlikely event의 정보량(informative)이 많음 자기 정보(self information) 사건(메시지) $e_{i}$의 정보량(단위: 로그의 밑이 2인 ..

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

기계학습과 수학 II

기계 학습이 처리할 데이터는 불확실한 세상에서 발생하므로, 불확실성(uncertainty)를 다루는 확률과 통계를 잘 활용해야 함. 확률 기초 확률변수(random variable): 임의적으로 변할수 있는 확률적 요소 확률분포(probability distribution) 확률 질량 함수(probability mass function), 이산(discrete) 확률 변수 확률 밀도 함수(probability dense function), 연속(continuous) 확률 변수 확률 벡터(random vector) 확률변수를 요소로 가짐 곱(AND)의 규칙(product rule)과 합(OR)의 규칙(sum rule) 조건부 확률(conditionaly productbility)에 의한 결합확률 계산 곱 ..

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

기계학습과 수학 I

기계 학습에서 수학의 역할 수학은 목적함수를 정의하고, 목점함수의 최저점을 찾아주는 최적화 이론을 제공 최적화(optimization)이론에 학습률(learning rate), 멈춤조건과 같은 제어를 추가하여 알고리즘 구축 사람은 알고리즘을 설계하고 데이터를 수집 기계 학습을 이해하기 위한 관련된 기본 선형대수(linear algebra)를 확인 벡터(vector) 샘플을 특징 벡터(feature vector)로 표현 요소의 종류와 크기를 표현할 수 있다. 데이터 집합의 여러 개 특징 벡터를 첨자로 구분($x_{i}$) 행렬(matrix) 여러 개의 벡터를 담음 요소 $x_{ij}$: i번째 행 j번째 열의 값 훈련집합을 담은 행렬을 설계 행렬(design matrix)이라 부름 각 열값은 feature..

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

기계학습 III

간단한 기계 학습의 예 카드 승인 지도 학습의 예제 주요한 x(feature)를 뽑는다 -> feature selection 2차원 특징공간에 발현된 age와 salary 데이터를 결정하는 결정 경계를 찾는 문제 데이터 목적함수 가설의 최적화 위의 세단계를 통해 지도학습을 수행한다. 과소적합과 과잉적합 과소적합(underfitting) 모델의 용량이 작아 오차가 클수밖에 없는 현상 대안: 비선형 모델을 사용 과잉적합(overfitting) 12차 다항식 곡선을 채택한다면 훈련집합에 대해 거의 완벽하게 근사화함 하지만 '새로운' 데이터를 예측한다면 큰 문제 발생 이유는 '모델의 용량(capacity)이 크기' 때문에 학습 과정에서 잡음까지 수용 -> 과잉적합 현상 훈련에 과몰입해서 단순 암기했기 때문 적절..

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

기계학습 II

데이터에 대한 이해 과학 기술의 정립 과정 데이터 수집 -> 모델 정립(가설 hypothesis) -> 예측 -> 피드백 위 전체의 순환 과정 기계 학습 기계 학습은 복잡한 문제/과업을 다룸 지능적 범주의 행위들을 규칙의 다양한 변화 양상을 가짐 단순한 수학 공식으로 표현 불가능함 데이터를 설명할 수 있는 학습 모델을 찾아가는 과정 데이터를 만드는 규칙을 모델을 통해 역추적하는 과정 이것이 데이터 사이언스 latent하다? 실제 현실에서는 데이터 생성 과정을 알 수 없다 단지 주어진 훈련집합 X, Y로 가설모델을 통해 근사 추정만 가능하다. 데이터의 양과 질 주어진 과업에 적합한 다양한 데이터를 충분한 양만큼 수집하면 과업의 성능을 향상 시킬수 있다. 예를 들어 정면 얼굴만 가진 데이터로 인식 학습을 하..

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

기계학습 I

사람과 동물은 학습을 한다. 그렇다면 기계도 학습이 가능한가? 경험을 통해 점진적으로 성능이 향상되는 기계를 만들 수 있을까? 인공지능(artificial inteligence)란? 인간의 학습, 추론, 지각, 자연언어 이해 등의 지능적 능력을 기기로 실현하는 기술 학습이란? 경험의 결과로 나타나는 비교적 지속적인 행동의 변화나 그 잠재력의 변화 또는 지식을 습득하는 과정 기계학습이란?(machine learning) 초창기 정의 Programming computers to learn from experience should eventually eliminate the need for much of this detailed programming effort. 컴퓨터가 경험을 통해 학습할 수 있도록 프로그..

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

인공지능이란?

인공지능이란? 사전적 의미 인간의 학습능력과 추론능력, 지각능력, 자연언어의 이해능력 등을 컴퓨터 프로그램으로 실현한 기술 무엇을 하고 싶은가? 인간처럼 생각하고 행동하는 기기의 탄생 학습 능력에 중점을 둬서 다뤄보자 인간의 학습? -> 인간은 경험을 통해서 새로운 규칙이나 방법을 찾는다(여러 학습 방법중 하나라고 생각) 인공지능하면 생각나는 것들? 알파고(2016년) GPU, TPU가 정확하게 뭘까? 일상 속 인공지능 음성인식(Siri) 추천시스템(eBay, Netflix) 자율주행(Waymo) 실시간 객체 인식(Face ID) 로봇(HUBO) 번역(papago) 인공지능을 하려면, Python과 Open Source로 많이 소통하자!! 파이썬은 중급레벨 정도까지 하자(적어도!!) 위처럼 뼈대 역할을 ..

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

탐색적 데이터 분석 - EDA

EDA? 데이터를 분석하는 기술적 접근은 굉장히 많다. 데이터 그 자체만으로부터 인사이트를 얻어 내는 접근법!(시각화나 통계적 기법을 사용하기도 한다.) EDA의 process 분석의 목적과 변수 확인 데이터 전체적으로 살펴보기(상관관계, NA값 등) 데이터의 개별 속성 파악하기 EDA with Example - Titanic https://www.kaggle.com/c/titanic Titanic - Machine Learning from Disaster | Kaggle www.kaggle.com 1. 분석의 목적과 변수 확인 살아 남은 사람들은 어떤 특징을 갖고 있을까? 라이브러리 준비 import pandas as pd import numpy as np import seaborn as sns imp..

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

Seaborn

Seaborn matplotlib을 기반으로 더 다양한 시각화 방법을 제공하는 라이브러리 커널밀도그림 카운트그림 캣그림 스트립그림 히트맵 Seaborn import 하기 import seaborn as sns 커널밀도그림(Kernel Density Plot) 히스토그램과 같은 연속적인 분포를 곡선화해서 그린 그림 # in Histogram x = np.arange(0, 22, 2) y = np.random.randint(0, 20, 20) plt.hist(y, bins=x) plt.show() # kdeplot sns.kdeplot(y, shade=True) plt.show() 카운트그림(Count Plot) 범주형 column의 빈도수를 시각화 -> Groupby 후의 도수를 비교하는 것과 동일 vot..

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

Matplotlib의 여러 plot들

1. Matplotlib Case Study 꺾은선 그래프(Plot) x = np.arange(20) # 0~ 19 y = np.random.randint(0, 20, 20) # 0~20까지 난수 20번 생성 plt.xlabel('x value') plt.ylabel('y value') plt.axis([0, 21, 0, 21]) plt.yticks([i for i in range(0, 21, 5)]) plt.plot(x, y) plt.show() 산점도(Scatter Plot) x = np.arange(20) # 0~ 19 y = np.random.randint(0, 20, 20) # 0~20까지 난수 20번 생성 plt.xlabel('x value') plt.ylabel('y value') plt.a..

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

Matplotlib으로 데이터 시각화 하기

1. Matplotlib 시작하기 파이썬의 데이터 시각화 라이브러리 cf) 라이브러리 vs 프레임워크 matplotlib pip install matplotlib %matplotlib inline을 통해서 활성화 import numpy as np import pandas as pda import matplotlib as plt %matplotlib inline 2. Case Study with Arguments plt.plot([1,2,3,4,5]) # 꺾은선 그래프. 실제 plotting을 하는 함수 y=x+1 plt.show() #plt를 확인하는 명령 figsize: Figure(도면)의 크기 조절 기본값 가로, 세로 72픽셀이라고 함 plt.figure(figsize=(6,6)) # plottin..

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

Pandas 시작하기

⭐ 수업에 사용된 데이터셋 : https://www.kaggle.com/datasets/imdevskp/corona-virus-report?resource=download COVID-19 Dataset Number of Confirmed, Death and Recovered cases every day across the globe www.kaggle.com 1. Pandas 시작하기 prerequisite: table 행과 열을 이용해서 데이터를 저장하고 관리하는 자료구조(컨테이너) 주로 행은 개체, 열은 속성을 나타냄 판다스 설치하기 pip install pandas 판다스 임포트 import pandas as pd 2. Pandas로 1차원 데이터 다루기 - Series 1-D labled arra..

프로그래머스 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기' 카테고리의 글 목록