25644 최대 상승 import sys input = sys.stdin.readline n = int(input()) nums = list(map(int, input().split())) ans, benefit = 0, 0 for i in range(len(nums)-1, -1, -1): benefit = max(benefit, nums[i]) ans = max(ans, benefit - nums[i]) print(ans) 1904 01타일 n = int(input()) dp = [0 for _ in range(n+1)] dp[0] = 1 dp[1] = 1 if n > 1: dp[2] = 2 for i in range(3, n+1): dp[i] = (dp[i-1] + dp[i-2])%15746 prin..
모든 순간의 다익 + dp로 생각하면 될듯 11403 경로 찾기 import sys input = sys.stdin.readline N = int(input()) graph = [] for _ in range(N): graph.append(list(map(int, input().split()))) for i in range(N): for j in range(N): for k in range(N): if graph[j][k] == 1 or (graph[j][i] == 1 and graph[i][k] == 1): graph[j][k] = 1 for x in graph: for y in x: print(y, end = " ") print("") 1389 케빈 베이컨의 6단계 법칙 import sys input..
최단 거리 알고리즘 18352 특정 거리의 도시 찾기 import sys import heapq input = sys.stdin.readline INF = int(1e9) N, M, K, X = map(int, input().split()) graph = [[] for _ in range(N+1)] distance = [INF] * (N+1) for _ in range(M): a, b = map(int, input().split()) graph[a].append((b, 1)) def dijk(start): # 시작 노드 넣으면 q = [] heapq.heappush(q, (0, start)) # 힙큐에 스타트 노드 넣고 distance[start] = 0 # 당연히 거리는 0 while q: # 큐가 안..
정렬 정렬 알고리즘 5문제 풀기 백준 1181 단어 정렬 n = int(input()) words = [] for _ in range(n): words.append(input()) words = list(set(words)) words.sort() words.sort(key = lambda x:len(x)) for x in words: print(x) 백준 3273 두 수의 합 import sys n = int(input()) nums = list(map(int, sys.stdin.readline().rstrip().split())) nums.sort() x = int(input()) cnt = 0 left = 0 right = len(nums) - 1 while left < right: tmp = nu..
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..
정렬 데이터를 특정 기준에 따라 순서대로 나열하는 것 선택 정렬, 삽입 정렬, 퀵 정렬, 계수 정렬이 있다. 선택 정렬 가장 기본적인 정렬 알고리즘으로 가장 작은 것을 왼쪽으로 계속 보내는 (오름차순의 경우) 정렬 방식 arr = [7, 3, 5, 9, 6, 2] for i in range(len(arr)): min_idx = i for j in range(i+1, len(arr)): if arr[min_idx] > array[j]: min_idx = j arr[i], arr[min_idx] = arr[min_idx], arr[i] 시간 복잡도가 O(N2) 이기 때문에 원소의 개수가 많으면 효율적이지 못한 알고리즘이다... 삽입 정렬 특정한 데이터를 적절한 위치에 삽입한다는 의미의 삽입 정렬이다..
AI 학습 시 데이터 전처리 등은 필수적이다. 데이터 처리에 대해 알아보자! 데이터 전처리 1) 데이터 구조 만들기 2) 모델링을 위한 전처리 데이터프레임 변경하기 데이터프레임의 column name을 변경해보자! 열 변경 - column 속성 변경 모든 열 이름을 변경할 때는 .columns에 리스트를 할당해준다. df.columns = ['total', 'day', 'time', 'month'] rename() 메소드 사용으로 딕셔너리를 활용하여 지정한 열 이름 변경이 가능하다. 단, 변경하지 않으려는 이름은 그대로 적어주어야 한다. df.rename(columns = {'total': 'total_size', 'day': 'date', 'time': 'time', 'month': 'wall'}, i..
분석할 수 있는 데이터 분석할 수 있는 데이터는 두 가지로 나뉜다 -> 수치형 / 범주형 범주형 데이터 질적 데이터(정성적 데이터) -> 수학 연산이 가능하지 않은 범주로 나뉘어지는 데이터 명목형 데이터와 순서형 데이터로 나눌 수 있다. - 명목형 데이터: 성별 등 (남성과 여성을 수학적으로 연산할 수 없다.) - 순서형 데이터: 연령대 등 (10대와 20대를 더한다고 해서 30대가 되진 않는다.) 수치형 데이터 양적 데이터(정량적 데이터) -> 수학 연산이 가능한 데이터 이산형 데이터와 연속형 데이터로 나눌 수 있다. - 이산형 데이터: 연속적이지 않은 데이터, 책의 페이지 수 등 - 연속형 데이터: 연속적인 데이터, 키, 온도 등 주의해야 할 점 범주와 수치로 나누긴 했지만, 질적 데이터가 모두 비 ..