본문 바로가기

전체 글

(147)
[Django] 비동기식 데이터 전달/불러오기 - Redis&Celery (1) 멘토분께서 비동기식 처리&빠른 DB 접근을 위해 Redis를 공부하라 하심. TTS API를 돌릴 때 꽤 시간이 걸려서..할 수 있을까?# 이론 정리Redis란?redis란, 간단하게 말하면 그냥 DB이다. 키-밸류 형식으로 데이터를 저장할 수 있는 NoSQL(이것 말고도 다른 자료구조가 많지만 가장 많이 이용하는 것은 이런 dictionary형태)또한 데이터를 메모리에 직접 저장, 즉 In-memory로 저장하므로 데이터 정렬 및 조회가 일반 DB보다 빠르다.저장 공간 제약이 있어 주메모리로는 사용 X데이터의 지속성을 보장하기 위해 두가지의 데이터 백업 방식을 같이 사용한다.RDB : 한 순간을 포착하여 메모리에 있는 내용을 DISK로 옮겨 담는 방식 -> 유실 가능성 OAOF : 데이터 변경 이벤트(..
[Python] 다양한 문제 풀어보기 동아리 마지막 과제여러 문제 풀어보기!  https://www.acmicpc.net/workbook/view/8708여기에 있는 다양한 유형의 문제들을 풀어본다.https://www.acmicpc.net/problem/23971import sysinput = sys.stdin.readline# 예제 : 10 10 2 2 -> 16# 예제 : 50000 50000 11 9 -> 20835000H, W, N, M = map(int, input().split()) a = H//(N+1)if H%(N+1)!=0: a+=1b = W//(M+1)if W%(M+1)!=0: b+=1print(a*b)단순 사칙연산 문제.나는 if문을 이용했지만, 그냥 나누기 연산 후 반올림을 해주는게 편할 듯 https://..
[Python] 기하 # 12-1. 기하 알아보기기하 핵심 이론CCW(Counter-ClockWise)는 평면상의 3개의 점과 관련된 점들의 위치 관계를 판단하는 알고리즘이다.세 점을 A(X1, Y1), B(X2, Y2), C(X3, Y3)라 할 때, CCW = (X1Y2 + Y2X3 + X3Y1) - (X2Y1 + X3Y2 + X1Y2)CCW의 결과가 0인 경우 반시계 방향으로 세 점이 위치한다. https://www.acmicpc.net/problem/11758import sysinput = sys.stdin.readlinex1 ,y1 = map(int, input().split())x2 ,y2 = map(int, input().split())x3 ,y3 = map(int, input().split())# CCW 공식re..
[Python] 동적 프로그래밍 문제 풀이 정리(1) https://www.acmicpc.net/problem/9095# 내 풀이import sysinput = sys.stdin.readlineT=int(input())D = [0]*11D[1] = 1D[2] = 2D[3] = 4for i in range(4, 11): D[i] = D[i-1]+D[i-2]+D[i-3]# print(D)# [0, 1, 2, 4, 7, 13, 24, 44, 81, 149, 274]for _ in range(T): n = int(input()) print(D[n])D[n] = 1,2,3으로 n을 만들 수 있는 경우의 수라고 가정하고, 4까지 직접 구해보니 직관적으로 점화식이 나왔다.D[i] =D[i-1]+D[i-2]+D[i-3]늘 직관적으로 찾을 수..
[Python] 동적 계획법 # 11-1. 동적 계획법 알아보기동적 계획법(dynamic programming)이란?복잡한 문제를 여러 개의 간단한 문제로 분리하여 부분의 문제를 해결함으로써 최종적으로 복잡한 문제의 답을 구하는 방법DP의 핵심 이론원리큰 문제들을 작은 문제로 나눌 수 있어야 한다.작은 문제들이 반복돼 나타나고 사용되며 이 작은 문제들의 결괏값은 항상 같아야 한다.메모제이션(memozation) 기법 : 모든 작은 문제들은 한 번만 계산해 DP 테이블에 저장하며 추후 재사용할 때는 이 DP 테이블을 이용한다.DP는 top-down 혹은 bottom-up 방식으로 구현할 수 있다.예시(피보나치 수열) : D[N] = D[N-1] + D[N-2]https://www.acmicpc.net/problem/2747top-do..
정기 예금 가입 여부 예측 데이터 다루기(2) 이전에 만든 데이터세트를 가지고 모델을 만든다.이전에 PyCaret을 통해 간단하게 모델들을 돌려봤는데, 가장 좋은 성능을 보여준 lightGBM, Gradient Boosting Classifier, Logisitic Regression을 중심으로 학습할 예정이다.+ 임시로 돌려볼 모델들# Pycaret으로 모델 돌려보기 # Pycaret 간단 정리!pip install pycaret # model 비교 라이브러리 설치from pycaret.classification import *exp_clf = setup(data = train, target = 'y', session_id=123) # data setup 보기models() # 사용되는 models 보기best_model = compare_mode..
[Python] 조합 문제 풀이 정리(2) https://www.acmicpc.net/problem/6603python 라이브러리 combinations을 사용하면 쉽게 풀 수 있지만...직접 구현해서 풀자# 정답 풀이import sysinput = sys.stdin.readlinedef dfs(depth, idx): if depth == 6: print(*out) return for i in range(idx, k): out.append(S[i]) dfs(depth + 1, i + 1) out.pop()while True: array = list(map(int, input().split())) k = array[0] S = array[1:] out =..
[Python] 조합 문제 풀이 정리(1) 조합 어렵다..확통 다 까먹음.조합은 기초를 다질겸 브론즈부터 천천히 올라가겠다. https://www.acmicpc.net/problem/16968s = input()if s[0] == 'c': answer = 26else: answer = 10for i in range(1, len(s)): # 연속 판단을 위해 1부터 시작 if s[i] == 'c': if s[i - 1] == 'c': answer *= 25 else: answer *= 26 else: if s[i - 1] == 'd': answer *= 9 else: answer *= 10print(..