그리디 그리디는 현재 순간에서 최고의 선택을 하는 알고리즘 1789 수들의 합 s = int(input()) hap = 0 ans = 0 while s >= hap: ans += 1 hap += ans if s < hap: break print(ans - 1) 1449 수리공 항승 n, l = map(int, input().split()) leak = list(map(int, input().split())) leak.sort() start = leak[0] cnt = 1 for x in leak[1:]: if x in range(start, start + l): continue else: start = x cnt += 1 print(cnt) 11501 주식 t = int(input()) for _ in ..
다이나믹 프로그래밍 효율적인 알고리즘을 위해 사용할 수 있는 기법. top-down(메모이제이션, 하향식) / bottom-up(상향식) 방식이 있다. 간단하게 설명하면 문제를 작은 문제부터 해결하여 큰 문제의 답을 도출하는 방식. 백준 17202 핸드폰 번호 궁합 a = list(input()) b = list(input()) data = [] for i in range(len(a)): data.append(a[i]) data.append(b[i]) dp = [0 for _ in range(15)] for i in range(len(data)-1): dp[i] = (int(data[i]) + int(data[i+1])) % 10 for i in range(14, 1, -1): for j in range..
Connection / Add 다르게 해서 모델 설계하기 약간 multi-task learning이랑 비슷해보여서 헷갈렸는데, Iris 데이터를 보면 sepal length / sepal width / petal length / petal width가 있다. length는 length 끼리 묶고, width는 width끼리 묶어서 모델에게 넣어주고 마지막에 모델을 붙여보자. 데이터 불러오기 import numpy as np import pandas as pd import tensorflow as tf from tensorflow import keras from sklearn.datasets import load_iris iris = load_iris() x = iris.data y = iris.targe..
CIFAR 이번엔 CIFAR - 10 데이터 써보자 flatten() 평탄화 - 말 그대로 쫙 펴주는거다. 어제 reshape로 했던 것을 그냥 코드 내부에서 flatten()으로 자동으로 처리해줄 수 있다. model.add(keras.layers.Flatten()) 그냥 얘만 추가해주면 나머지는 똑같다. 데이터 불러오기 import numpy as np import pandas as pd import matplotlib.pyplot as plt import random as rd from sklearn.metrics import accuracy_score import tensorflow as tf from tensorflow import keras 라이브러리 불러오고, (train_x, train_y..
이진 탐색 데이터 탐색 시 매우 빠른 속도를 자랑하는 알고리즘이다. 이진 탐색을 보기 이전에 순차 탐색부터 알아보자. 순차 탐색 순차 탐색은 말 그대로 특정 데이터를 찾기 위해 앞에서부터 하나씩 확인하는 방법이다. 시간만 충분하다면 상관없지만, 코딩 테스트 같은 경우 순차 탐색을 사용할 시 시간 초과가 발생하기 쉽다. def sequential_search(n, target, arr): for i in range(n): if arr[i] == target: return i + 1# 현재의 위치 순차 탐색 이진 탐색은 반으로 쪼개면서 탐색하는 방법이라 생각하면 된다. 이미 정렬되어 있는 데이터에 사용 가능하며, 매우 빠르게 탐색을 할 수 있다. 위치를 나타내는 변수(포인터)가 3개가 필요한데, 시작점, 끝..
은닉층 추가 어제 만들었던 모델에 은닉층을 추가해보자. = Hidden Layer 라이브러리를 먼저 불러와준다. from sklearn.datasets import fetch_california_housing california = fetch_california_housing() x = california.data y = california.target x.shape, y.shape# (20640,8) (20640,) import tensorflow as tf import pandas as pd import numpy as np from tensorflow import keras 어제 배운대로 모델 구조를 하나씩 쌓아가자. keras.backend.clear_session() model = keras.m..
프레임워크 선택 - Tensorflow(Keras) 보통 Tensorflow, Pytorch 둘 중 하나 쓰는데 나는 파이토치가 익숙하지만, 수업에서는 tensorflow의 keras를 써서 더 잘 됐다는 생각이 들었다. tensorflow도 연습을 할 수 있어서 일석이조다. Linear Regression / Logistic Regression import tensorflow as tf from tensorflow import keras import numpy as np 기본 라이브러리 불러오기 - colab을 사용하면 별도의 설치 필요 없이 코드로 불러와 사용할 수 있다. x = np.array(range(30)) y = x * 2 - 10 print(x) print(y) x값을 토대로 y를 예측하는..
선행 개념 스택, 큐, 재귀 개념을 먼저 공부하고 들어가자. Stack 스택은 박스 쌓기로 생각하면 편하다. 나중에 쌓인 것이 가장 먼저 들릴 수 있는 것처럼, 이러한 구조를 LIFO(Last In First Out)라 한다. 파이썬에서는 리스트로 스택을 구현할 수 있다. stack = [] stack.append(1)# [1] stack.append(2)# [1, 2] stack.append(3)# [1, 2, 3] stack.pop()# [1, 2] stack.append(4)# [1, 2, 4] pop() 메소드는 가장 뒤의 데이터를 제거하고, append는 가장 뒤에 데이터를 삽입한다. 백준 10828 스택 import sys n = int(input()) stack = [] cmd = [sys...
산점도 두 숫자형 변수의 관계를 나타내는 그래프 # 직선이 중요 -> 무슨 의미일까? 차차 알아가보자. 환경 준비 라이브러리를 먼저 불러오자. import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns 이번에는 뉴욕 공기 오염도 데이터셋을 사용해보자. air = pd.read_csv('https://raw.githubusercontent.com/DA4BAM/dataset/master/air2.csv') air['Date'] = pd.to_datetime(air['Date']) 산점도 플롯 plt.scatter('Temp', 'Ozone', data = air) #plt.scatter(air['Tem..
이전에 배운 숫자형 / 범주형 변수를 통해 단변량분석을 배울 수 있다. 숫자형 변수는 min, max, mean, std, 사분위수 등으로 정리 -> Histogram, Density plot, Box plot 등으로 시각화 범주형 변수는 빈도 수 / 비율 등으로 정리 -> Bar plot / Pie chart 등으로 시각화 환경 준비 단변량 분석 실습에 필요한 환경을 세팅해보자. 먼저 라이브러리를 불러오자. import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns 필요한 데이터셋을 불러오자. 유명한 데이터셋인 타이타닉이다. path = 'https://raw.githubusercontent.co..