본문 바로가기

전체 글

(148)
[Django] NHN Cloud 휴대폰 sms 본인 인증 기능 먼저, 본인 인증에는 여러가지 방식이 있다.대부분의 서비스에서 사용되는 휴대폰 본인 인증 방식(통신사 인증, 카카오톡 인증, 나이스 등...)은 사업자 등록이 필요하다. 사용자의 개인정보를 다루기 때문!그만큼 강력한 보안을 보여주지만, 작은 프로젝트에서는 사용하기 힘들다.이번 프로젝트에서는 사업자 등록이 필요없는 단순한 문자 API를 활용하여 전화번호를 이용한 본인 인증을 이용하기로 했다.휴대폰인 본인 소유인지 확인할 수는 없지만, 빠른 본인 인증이 가능하다.SMS API를 제공하는 서비스도 다양하게 있다. 대표적으로 Twilio, Naver Cloud, AWS SNS 등을 많이 사용한다.이번에 내가 하게 된 건 NHN Cloud 서비스! 선택지가 없었따...이전 개발자가 남긴 흔적https://www...
[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 =..