전체 글 67

Data Visulization : Matplotlib(데이터 시각화)

import numpy as np import matplotlib.pyplot as plt 📌 Matplotlib -Python과 Numpy에서 plotting을 위해 사용되며 주로 2D 도표를 위한 desktop package -IPython과 통합하여 과학 계산 컴퓨팅을 위한 다양한 기능 구축 -IPython, GUI toolkit을 maplotlib를 사용하면 대화형 기능도 구축 가능 x = np.arange(10) plt.plot(x) #plt.plot(a)라고 할 때 x축은 a의 index이며 y축은 a의 요소값 x = np.arange(10) y = x ** 2 plt.plot(x, y) #결과로 2차 곡선이 나오게 됨 📌 plot을 그릴 시 스타일 지정 가능 문자 색상 마커 모양 b Blue..

CDS 2021.11.12

EDA (Exploratory Data Analysis)

📌 EDA ('탐색적 자료 분석') numpy, pandas에 이어서 수집한 데이터가 들어왔을 때 데이터를 다양한 각도에서 관찰하고 이해하는 과정인 EDA이다. 평균, 표준편차, median, outlier, missing value, 분포 모양 등을 활용 from IPython.display import Image import numpy as np import pandas as pd import seaborn as sns #image 가져오는 모듈 EDA를 하기 위해서 기본적으로 추가되는 import module은 위와 같다 차근차근 EDA를 위한 step을 밟아본다 df = sns.load_dataset("titanic") #타이타닉이라는 데이터셋 로드 df.head() #데이터 중 맨 앞 5개 행만..

CDS 2021.11.12

[자료구조] 26 이진트리

📌트리(Tree) root 와 서브 트리로 구성된 계층형 hierarchical 자료 구조 📌이진 트리 (Binary Tree) 각 노드는 최대 2개의 자식노드 [ 용어 정리 ] ✔️단말 노드 자식 노드가 없는 차수가 0인 노드 ✔️레벨 루트는 레벨 1이며 단말 노드 방향으로 1씩 증가 ✔️부모-자식 부모와 자식 노트의 레벨 차이 1 ✔️형제 형제 노트는(sibling) 부모가 동일한 자식 노드들 ✔️조상 노드 (Ancestor node) 특정 노드에서 루트까지 경로에 존재하는 모든 노드 ✔️자손 노드 (Descendant node) 특적 노드의 서브 트리에 존재하는 모든 노드 ✔️내부 노드(Internal node) 자식이 최소한 1개 이상인 노드 ✔️외부 노드(External node) 자식이 없는 ..

자료구조 2020.10.09

[자료구조] 25 해싱 탐색

앞에서 이진 탐색, 보간 탐색은 탐색 키가 발견될 때까지 저장된 값들과 반복적인 비교 수행 이런 경우 n이 높아질 수록 시간 소요가 많다 📌해싱 탐색(Hashing Search) 탐색 키 간의 비교 없이 탐색 키에 직접 산술 연산 적용 탐색 키 정보가 저장되어 있는 테이블 상의 위치 계산 => 주소를 통해 접근 ex)Dictionary 👉 탐색하려는 명칭 x에 해시 함수를 적용하면 이 명칭의 정보가 저장된 해시 테이블의 버켓 주소가 반환 된다 📌해싱 탐색 시간 : O(1) => 상수만큼 걸린다 📌해시테이블(Hash table) 명칭 identifier 들이 저장된 고정된 크기의 표 👉 행 row = 버켓 bucket 👉 열 column = 슬롯 slot 행이 b개 열이 s개 있다면 b*s개의 명칭을 적재..

자료구조 2020.10.09

[자료구조] 24 보간 탐색

📌보간 탐색 (interpolation search) 항목들이 정렬되어 있을 때 키 값의 차이와 위치의 차이가 비례한다는 가정을 바탕으로 정렬된 항목 리스트에 대한 것? => 이진 탐색과 유사 단, median값을 이용하는 것이 아닌 탐색 Key와 탐색 경계 값의 차이를 고려하여 키의 위치 결정 ✔️가정 양쪽 경계 값들의 차이 : 키 값과 왼쪽 경계 값의 차이 = 양쪽 범위의 거리 : 탐색 위치와 왼쪽 경계의 거리 차이 즉, 👉 ( list[right] - list[left] ) : ( key - list[left] ) = ( right - left ) : ( 탐색위치 - left ) 계산하면 👉 pos = left + [( right - left ) * ( key - list[left] )] / [( ..

자료구조 2020.10.09

[자료구조] 23 이진탐색

📌이진탐색 (Binary Search) 탐색시간을 줄이기 위하여 항목들을 정렬한 후에 탐색을 적용 ✔️알고리즘 1. 오름차순으로 정렬된 항목들에 대해 가운데 median을 찾아 key와 비교한다 2. key=median이면 중간값의 인덱스를 반환하고 탐색을 종료한다 3. 탐색 키가 중간 값보다 작으면 중간 값의 왼쪽만 탐색하면 된다, 반대면 오른쪽만 4. 변경된 탐색 대상 항목들에 대해 탐색 반복한다 📌시간복잡도: O(log_2n) public class BinarySearch { public static void main(String[] args) { int n = 9; int pos; int key = 23; int[] num = {0, 1, 5, 9, 13, 17, 23, 32, 45}; pos =..

자료구조 2020.10.09

[자료구조] 22 순차탐색

📌탐색 다수의 레코드 집합에서 특정 키 값과 일치하는 레코드 찾는 작업 ✔️레코드 객체(object)의 속성(property)에 해당하는 필드(field)의 집합 ✔️리스트 레코드의 집합 ✔️디스크 리스트가 파일형식으로 저장되는 곳 📌순차탐색 (Sequential Search) 목표 키를 찾을 때까지 순차적으로 비교 반복 ❗️최상 : 첫번째 비교에서 목표 레코드 찾는 경우 , 비교 횟수 1번 💢최악 : 가장 마지막 비교에서 목표 레코드 찾는 경우 , 비교 횟수 n번 시간 복잡도 : O(n) import java.util.Scanner; public class Sequential { public static void main(String[] args) { Scanner sc = new Scanner(Sys..

자료구조 2020.10.09

백준 2588번

📌 (세자리 수) * (세자리 수) www.acmicpc.net/problem/2588 2588번: 곱셈 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다. www.acmicpc.net 4 7 2 (1) x 3 8 5 (2) 2 3 6 0 (3) 3 7 7 6 (4) 2 4 1 6 (5) 1 8 1 7 2 0 (6) (1)과(2)는 입력이고 (3),(4),(5),(6) 을 출력할 때 #include int main(){ int a,b; scanf("%d %d", &a, &b); printf("%d\n", a*(b%10)); printf("%d\n", a*((b%100)/10)); printf("%d\n", a*(b/100)); printf("%d", a*b); }..

알고리즘 풀이 2020.10.08